postmarkdown 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ gemfiles/*.gemfile.lock
4
4
  db/*.sqlite3
5
5
  log/*.log
6
6
  tmp/
7
+ pkg/
data/Gemfile CHANGED
@@ -3,3 +3,5 @@ source 'http://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem 'ruby-debug19', :require => false
6
+ gem 'timecop', :require => false
7
+ gem 'generator_spec', :require => false
@@ -1,5 +1,5 @@
1
1
  class PostsController < ApplicationController
2
- layout lambda { |controller| Postmarkdown::Config.options[:use_theme] ? 'postmarkdown' : 'application' }
2
+ layout :choose_layout
3
3
 
4
4
  def show
5
5
  resource
@@ -34,4 +34,13 @@ class PostsController < ApplicationController
34
34
  def posts_per_page
35
35
  params[:count] || Postmarkdown::Config.options[:posts_per_page]
36
36
  end
37
+
38
+ def choose_layout
39
+ if Postmarkdown::Config.options[:use_theme]
40
+ ActiveSupport::Deprecation.warn "`Postmarkdown::Config.options[:use_theme]` is deprecated. Use `Postmarkdown::Config.options[:layout] = 'postmarkdown'` instead."
41
+ 'postmarkdown'
42
+ else
43
+ Postmarkdown::Config.options[:layout]
44
+ end
45
+ end
37
46
  end
@@ -0,0 +1,20 @@
1
+ module PostHelper
2
+ class Sanitizer < HTML::WhiteListSanitizer
3
+ self.allowed_tags -= %w(img a)
4
+ end
5
+
6
+ def post_summary_html(post)
7
+ if post.summary.present?
8
+ content_tag :p, post.summary
9
+ else
10
+ html = Sanitizer.new.sanitize(post_content_html(post))
11
+ doc = Nokogiri::HTML.fragment(html)
12
+ para = doc.search('p').detect { |p| p.text.present? }
13
+ para.try(:to_html).try(:html_safe)
14
+ end
15
+ end
16
+
17
+ def post_content_html(post)
18
+ RDiscount.new(render(:inline => post.content)).to_html.html_safe
19
+ end
20
+ end
@@ -9,11 +9,16 @@ class Post
9
9
 
10
10
  attr_reader :slug
11
11
 
12
- FILENAME_FORMAT = /^(\d+-\d+-\d+)-(.*)(\.[^.]+)$/
12
+ TIME_FORMAT = /-\d{6}/
13
+ DATE_FORMAT = /\d{4}-\d{2}-\d{2}(#{TIME_FORMAT})?/
14
+ SLUG_FORMAT = /[A-Za-z0-9\-]+/
15
+ EXTENSION_FORMAT = /\.[^.]+/
16
+
17
+ FILENAME_FORMAT = /^(#{DATE_FORMAT})-(#{SLUG_FORMAT})(#{EXTENSION_FORMAT})$/
13
18
 
14
19
  def initialize(path)
15
20
  @path = path
16
- @date_str, @slug = File.basename(path).match(FILENAME_FORMAT).captures
21
+ @date_str, _, @slug = File.basename(path).match(FILENAME_FORMAT).captures
17
22
  end
18
23
 
19
24
  def to_param
@@ -47,6 +52,10 @@ class Post
47
52
  metadata[:title] || slug.titleize
48
53
  end
49
54
 
55
+ def summary
56
+ metadata[:summary]
57
+ end
58
+
50
59
  def author
51
60
  metadata[:author]
52
61
  end
@@ -74,35 +83,18 @@ class Post
74
83
  "#{title.inspect} (#{slug})"
75
84
  end
76
85
 
77
- def content_html
78
- RDiscount.new(content).to_html.html_safe
79
- end
80
-
81
- class Sanitizer < HTML::WhiteListSanitizer
82
- self.allowed_tags -= %w(img a)
83
- end
84
-
85
- TagHelper = Class.new.extend ActionView::Helpers::TagHelper
86
-
87
- def summary_html
88
- if metadata[:summary].present?
89
- TagHelper.content_tag :p, metadata[:summary]
90
- else
91
- html = Sanitizer.new.sanitize(content_html)
92
- doc = Nokogiri::HTML.fragment(html)
93
- para = doc.search('p').detect { |p| p.text.present? }
94
- para.try(:to_html).try(:html_safe)
95
- end
96
- end
97
-
98
86
  class << self
99
87
  def all
100
88
  file_extensions = Postmarkdown::Config.options[:markdown_file_extensions].join(',')
101
- @@posts ||= Dir.glob(Rails.root + "app/posts/*.{#{file_extensions}}").map do |filename|
89
+ @@posts ||= Dir.glob("#{directory}/*.{#{file_extensions}}").map do |filename|
102
90
  Post.new filename
103
91
  end.select(&:visible?).sort_by(&:date).reverse
104
92
  end
105
93
 
94
+ def directory
95
+ Rails.root.join('app', 'posts')
96
+ end
97
+
106
98
  def where(conditions = {})
107
99
  conditions = conditions.symbolize_keys
108
100
  conditions.assert_valid_keys :year, :month, :day, :slug, :to_param
@@ -10,7 +10,7 @@
10
10
  by
11
11
  = post.author
12
12
  - if summary
13
- = post.summary_html
13
+ = post_summary_html post
14
14
  %p.more= link_to 'Read more&hellip;'.html_safe, post
15
15
  - else
16
- ~ post.content_html
16
+ ~ post_content_html post
@@ -22,7 +22,7 @@ xml.feed :xmlns => 'http://www.w3.org/2005/Atom' do
22
22
 
23
23
  xml.id post_url(post)
24
24
  xml.content :type => :html, 'xml:base' => post_url(post) do
25
- xml.cdata! post.content_html
25
+ xml.cdata! post_content_html(post)
26
26
  end
27
27
  end
28
28
  end
@@ -3,6 +3,8 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "ruby-debug19", :require=>false
6
+ gem "timecop", :require=>false
7
+ gem "generator_spec", :require=>false
6
8
  gem "rails", "~> 3.0.0"
7
9
 
8
10
  gemspec :path=>"../"
@@ -3,6 +3,8 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "ruby-debug19", :require=>false
6
+ gem "timecop", :require=>false
7
+ gem "generator_spec", :require=>false
6
8
  gem "rails", "~> 3.1.0"
7
9
  gem "combustion", "~> 0.3.1"
8
10
 
@@ -3,6 +3,8 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "ruby-debug19", :require=>false
6
+ gem "timecop", :require=>false
7
+ gem "generator_spec", :require=>false
6
8
  gem "rails", "~> 3.2.0"
7
9
  gem "combustion", "~> 0.3.1"
8
10
 
@@ -36,7 +36,7 @@ module Postmarkdown
36
36
 
37
37
  def override_theme
38
38
  if options.theme || options.all
39
- directory 'views/layouts', 'views/layouts'
39
+ directory 'views/layouts', 'app/views/layouts'
40
40
  if Rails.application.config.respond_to?(:assets) && Rails.application.config.assets.enabled
41
41
  directory '../vendor/assets/stylesheets', 'app/assets/stylesheets'
42
42
  else
@@ -6,14 +6,14 @@ module Postmarkdown
6
6
  class_option :date, :type => :string, :group => :runtime, :desc => 'Publish date for the post'
7
7
 
8
8
  def check_slug
9
- unless slug =~ /^[A-Za-z0-9\-]+$/
9
+ unless slug =~ /^#{Post::SLUG_FORMAT}$/
10
10
  puts 'Invalid slug - valid characters include letters, digits and dashes.'
11
11
  exit
12
12
  end
13
13
  end
14
14
 
15
15
  def check_date
16
- if options.date && options.date !~ /^\d{4}-\d{2}-\d{2}$/
16
+ if options.date && options.date !~ /^#{Post::DATE_FORMAT}$/
17
17
  puts 'Invalid date - please use the following format: YYYY-MM-DD, eg. 2011-01-01.'
18
18
  exit
19
19
  end
@@ -26,8 +26,17 @@ module Postmarkdown
26
26
  private
27
27
 
28
28
  def publish_date
29
- date = options.date.present? ? Time.zone.parse(options.date) : Time.zone.now
30
- date.strftime('%Y-%m-%d')
29
+ format = '%Y-%m-%d-%H%M%S'
30
+
31
+ if options.date.present?
32
+ date_string = options.date
33
+ date_string += '-000000' unless options.date.match(/(#{Post::TIME_FORMAT}$)/)
34
+ date = Time.strptime(date_string, format)
35
+ else
36
+ date = Time.zone.now
37
+ end
38
+
39
+ date.strftime(format)
31
40
  end
32
41
  end
33
42
  end
@@ -13,7 +13,7 @@ Postmarkdown::Config.options[:permalink_format] = :day
13
13
 
14
14
  Postmarkdown::Config.options[:posts_per_page] = 5
15
15
 
16
- Postmarkdown::Config.options[:use_theme] = false
16
+ Postmarkdown::Config.options[:layout] = 'application'
17
17
 
18
18
  Postmarkdown::Config.options[:permalink_regex] = {}
19
19
  Postmarkdown::Config.options[:permalink_regex][:day] = %r[\d{4}/\d{2}/\d{2}/[^/]+]
@@ -1,3 +1,3 @@
1
1
  module Postmarkdown
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -29,8 +29,9 @@ Gem::Specification.new do |s|
29
29
  s.add_dependency 'kaminari'
30
30
 
31
31
  s.add_development_dependency 'appraisal'
32
- s.add_development_dependency 'rspec-rails', '~> 2.5'
32
+ s.add_development_dependency 'rspec-rails', '~> 2.8'
33
33
  s.add_development_dependency 'capybara', '~> 1.0.0.beta'
34
34
  s.add_development_dependency 'sqlite3'
35
35
  s.add_development_dependency 'delorean', '>= 0.2'
36
+ s.add_development_dependency 'combustion', '~> 0.3.1'
36
37
  end
data/readme.md CHANGED
@@ -72,11 +72,17 @@ To customize the feed title, add the following to an initializer (`config/initia
72
72
 
73
73
  To link to the feed in your app, simply use the route helper: `<%= link_to 'RSS Feed', posts_feed_path %>`
74
74
 
75
- ## Built-in Theme
75
+ ## Customizing the layout
76
76
 
77
- Postmarkdown comes with minimal built-in theme for your convenience. To turn on the theme, add the following to an initializer (`config/initializers/postmarkdown.rb`):
77
+ By default, Postmarkdown will use your application's default layout, but if you wish to use a specific custom layout, you can set the following configuration in an initializer (`config/initializers/postmarkdown.rb`):
78
78
 
79
- Postmarkdown::Config.options[:use_theme] = true
79
+ Postmarkdown::Config.options[:layout] = 'layout_name'
80
+
81
+ ### Built-in Theme
82
+
83
+ Postmarkdown comes with minimal built-in theme for your convenience.
84
+
85
+ Postmarkdown::Config.options[:layout] = 'postmarkdown'
80
86
 
81
87
  ## Customizing Routes
82
88
 
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe PostHelper do
4
+ def test_post(file_name)
5
+ Post.new(File.dirname(__FILE__) + "/../support/data/posts/#{file_name}")
6
+ end
7
+
8
+ let(:summary_html) { helper.post_summary_html(post) }
9
+ let(:content_html) { helper.post_content_html(post) }
10
+
11
+ context 'with first post' do
12
+ let(:post) { test_post '2011-04-01-first-post.markdown' }
13
+
14
+ it 'renders HTML content' do
15
+ content_html.should be_html_safe
16
+ content_html.should =~ /^<p>Lorem ipsum/
17
+ content_html.should =~ /^<p>Duis aute irure dolor/
18
+ end
19
+
20
+ it 'renders HTML summary' do
21
+ summary_html.should be_html_safe
22
+ summary_html.should =~ /^<p>Lorem ipsum/
23
+ summary_html.should_not =~ /^<p>Duis aute irure dolor/
24
+ end
25
+ end
26
+
27
+ context 'with image post' do
28
+ let(:post) { test_post '2011-04-28-image.markdown' }
29
+
30
+ it 'renders HTML summary' do
31
+ summary_html.should be_html_safe
32
+ summary_html.should =~ /^<p>Image description/
33
+ end
34
+ end
35
+
36
+ context 'with custom summary post' do
37
+ let(:post) { test_post '2011-04-28-summary.markdown' }
38
+
39
+ it 'renders HTML summary' do
40
+ summary_html.should be_html_safe
41
+ summary_html.should eq '<p>This is a custom &amp; test summary.</p>'
42
+ end
43
+ end
44
+ end
@@ -141,6 +141,10 @@ describe 'Post views', :type => :request do
141
141
  it 'should preserve whitespace on code blocks' do
142
142
  page.source.should match '<pre><code>First line of code.&#x000A; Second line of code.&#x000A;</code></pre>'
143
143
  end
144
+
145
+ it 'should allow calling Rails helpers via ERB tags' do
146
+ page.source.should match('<p>Paragraph created by Rails helper</p>')
147
+ end
144
148
  end
145
149
 
146
150
  context 'Posts#feed' do
@@ -180,15 +184,27 @@ describe 'Post views', :type => :request do
180
184
  end
181
185
 
182
186
  context 'theme' do
183
- it 'should not use the built-in layout by default' do
187
+ before { @original_layout = Postmarkdown::Config.options[:layout] }
188
+ after { Postmarkdown::Config.options[:layout] = @original_layout }
189
+
190
+ it 'should use the application layout by default' do
184
191
  visit posts_path
185
192
  page.should_not have_content('A postmarkdown blog')
186
193
  end
187
194
 
188
- it 'should use the built-in layout when the global option is set' do
189
- Postmarkdown::Config.options[:use_theme] = true
195
+ it 'should use the postmarkdown layout when using theme' do
196
+ ActiveSupport::Deprecation.silence do
197
+ Postmarkdown::Config.options[:use_theme] = true
198
+ visit posts_path
199
+ page.should have_content('A postmarkdown blog')
200
+ Postmarkdown::Config.options[:use_theme] = false
201
+ end
202
+ end
203
+
204
+ it 'should use the built-in layout when the global option is set to true' do
205
+ Postmarkdown::Config.options[:layout] = 'custom_layout'
190
206
  visit posts_path
191
- page.should have_content('A postmarkdown blog')
207
+ page.should have_content('A custom layout')
192
208
  end
193
209
  end
194
210
  end
@@ -11,3 +11,5 @@ Second paragraph of content.
11
11
 
12
12
  First line of code.
13
13
  Second line of code.
14
+
15
+ <%= content_tag :p, "Paragraph created by Rails helper" %>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>RailsApp</title>
5
+ <%= csrf_meta_tag %>
6
+ </head>
7
+ <body>
8
+
9
+ <p>A custom layout</p>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ module Postmarkdown
4
+ describe PostGenerator do
5
+ include GeneratorSpec::TestCase
6
+ destination File.expand_path('../../../../../tmp', __FILE__)
7
+
8
+ before do
9
+ prepare_destination
10
+
11
+ Post.stub(:directory) { File.expand_path('tmp/app/posts') }
12
+ Post.class_variable_set('@@posts', nil)
13
+ end
14
+
15
+ context 'with the slug parameter' do
16
+ it 'creates a file for the slug and the current date' do
17
+ Timecop.freeze(Time.utc(2012, 1, 1, 10, 20, 30)) do
18
+ run_generator %w(test-post)
19
+
20
+ Dir.glob('tmp/app/posts/*').should == ['tmp/app/posts/2012-01-01-102030-test-post.markdown']
21
+
22
+ Post.all.count.should == 1
23
+
24
+ post = Post.first
25
+ post.slug.should == 'test-post'
26
+ post.date.should == Date.parse('2012-01-01')
27
+ post.title.should == 'Test post'
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'with the slug and date parameters' do
33
+ it 'creates a file for the slug and the given date' do
34
+ run_generator %w(other-post --date=2012-01-02)
35
+
36
+ Dir.glob('tmp/app/posts/*').should == ['tmp/app/posts/2012-01-02-000000-other-post.markdown']
37
+
38
+ Post.all.count.should == 1
39
+
40
+ post = Post.first
41
+ post.slug.should == 'other-post'
42
+ post.date.should == Date.parse('2012-01-02')
43
+ post.title.should == 'Other post'
44
+ end
45
+ end
46
+
47
+ context 'with the slug, date and time parameters' do
48
+ it 'creates a file for the slug and the given date' do
49
+ run_generator %w(other-post --date=2012-01-02-102030)
50
+
51
+ Dir.glob('tmp/app/posts/*').should == ['tmp/app/posts/2012-01-02-102030-other-post.markdown']
52
+
53
+ Post.all.count.should == 1
54
+
55
+ post = Post.first
56
+ post.slug.should == 'other-post'
57
+ post.date.should == Time.utc(2012, 01, 02, 10, 20, 30).to_date
58
+ post.title.should == 'Other post'
59
+ end
60
+ end
61
+
62
+ context 'with invalid slug' do
63
+ it 'raises a system exit exception' do
64
+ lambda { run_generator %w(!test-post) }.should raise_error(SystemExit)
65
+ end
66
+
67
+ it 'does not create the file' do
68
+ Dir['app/posts/*'].should be_empty
69
+ end
70
+ end
71
+
72
+ context 'with invalid date' do
73
+ it 'raises a system exit exception' do
74
+ lambda { run_generator %w(test-post --date=2012-02) }.should raise_error(SystemExit)
75
+ end
76
+
77
+ it 'does not create the file' do
78
+ Dir['app/posts/*'].should be_empty
79
+ end
80
+ end
81
+ end
82
+ end
@@ -16,18 +16,16 @@ describe Post do
16
16
  end
17
17
  end
18
18
 
19
+ it 'should return the correct directory' do
20
+ Post.directory.should == Rails.root.join('app', 'posts')
21
+ end
22
+
19
23
  context 'with first post' do
20
24
  subject { test_post '2011-04-01-first-post.markdown' }
21
25
  its(:slug) { should == 'first-post' }
22
26
  its(:date) { should == Date.parse('2011-04-01') }
23
27
  its(:title) { should == 'First Post' }
24
28
  its(:content) { should =~ /\ALorem ipsum/ }
25
- its(:content_html) { should =~ /^<p>Lorem ipsum/ }
26
- its(:content_html) { should =~ /^<p>Duis aute irure dolor/ }
27
- its(:content_html) { should be_html_safe }
28
- its(:summary_html) { should =~ /^<p>Lorem ipsum/ }
29
- its(:summary_html) { should_not =~ /^<p>Duis aute irure dolor/ }
30
- its(:summary_html) { should be_html_safe }
31
29
  end
32
30
 
33
31
  context 'with custom title post' do
@@ -38,22 +36,23 @@ describe Post do
38
36
  its(:content) { should == "Content goes here.\n" }
39
37
  end
40
38
 
39
+ context 'with a custom title that also and including timestamp' do
40
+ subject { test_post '2012-02-13-102030-custom-title-and-timestamp.markdown' }
41
+ its(:slug) { should == 'custom-title-and-timestamp' }
42
+ its(:date) { should == Time.utc(2012, 02, 13, 10, 20, 30).to_date }
43
+ its(:title) { should == 'This is a custom title' }
44
+ its(:content) { should == "Content goes here.\n" }
45
+ end
46
+
41
47
  context 'with author' do
42
48
  subject { test_post '2011-05-01-full-metadata.markdown' }
43
49
  its(:author) { should == 'John Smith' }
44
50
  its(:email) { should == 'john.smith@example.com' }
45
51
  end
46
52
 
47
- context 'with image post' do
48
- subject { test_post '2011-04-28-image.markdown' }
49
- its(:summary_html) { should =~ /^<p>Image description/ }
50
- its(:summary_html) { should be_html_safe }
51
- end
52
-
53
53
  context 'with custom summary post' do
54
54
  subject { test_post '2011-04-28-summary.markdown' }
55
- its(:summary_html) { should == '<p>This is a custom &amp; test summary.</p>' }
56
- its(:summary_html) { should be_html_safe }
55
+ its(:summary) { should == 'This is a custom & test summary.' }
57
56
  end
58
57
 
59
58
  context 'with alternate markdown file extension' do
@@ -18,11 +18,21 @@ require 'capybara/rspec'
18
18
  require 'rspec/rails'
19
19
  require 'capybara/rails'
20
20
 
21
+ require 'timecop'
22
+ require 'generator_spec/test_case'
23
+ Dir[File.expand_path('lib/generators/postmarkdown/*.rb')].each { |f| require f }
24
+
21
25
  require 'delorean'
22
26
 
23
27
  RSpec.configure do |config|
24
28
  config.mock_with :rspec
25
29
  config.include Delorean
30
+ config.order = :random
31
+
32
+ config.after do
33
+ Timecop.return
34
+ FileUtils.rm_rf('spec/tmp/app/posts/.')
35
+ end
26
36
  end
27
37
 
28
38
  ActiveSupport::Deprecation.debug = true
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: This is a custom title
3
+ ---
4
+
5
+ Content goes here.
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.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-08-24 00:00:00.000000000 Z
15
+ date: 2012-12-19 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
@@ -133,7 +133,7 @@ dependencies:
133
133
  requirements:
134
134
  - - ~>
135
135
  - !ruby/object:Gem::Version
136
- version: '2.5'
136
+ version: '2.8'
137
137
  type: :development
138
138
  prerelease: false
139
139
  version_requirements: !ruby/object:Gem::Requirement
@@ -141,7 +141,7 @@ dependencies:
141
141
  requirements:
142
142
  - - ~>
143
143
  - !ruby/object:Gem::Version
144
- version: '2.5'
144
+ version: '2.8'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: capybara
147
147
  requirement: !ruby/object:Gem::Requirement
@@ -190,6 +190,22 @@ dependencies:
190
190
  - - ! '>='
191
191
  - !ruby/object:Gem::Version
192
192
  version: '0.2'
193
+ - !ruby/object:Gem::Dependency
194
+ name: combustion
195
+ requirement: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ~>
199
+ - !ruby/object:Gem::Version
200
+ version: 0.3.1
201
+ type: :development
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ~>
207
+ - !ruby/object:Gem::Version
208
+ version: 0.3.1
193
209
  description: A simple Rails blog engine powered by markdown.
194
210
  email:
195
211
  - jason.weathered@ennova.com.au
@@ -208,6 +224,7 @@ files:
208
224
  - Rakefile
209
225
  - app/controllers/application_controller.rb
210
226
  - app/controllers/posts_controller.rb
227
+ - app/helpers/post_helper.rb
211
228
  - app/models/post.rb
212
229
  - app/views/layouts/postmarkdown.html.haml
213
230
  - app/views/posts/_feed_link.html.haml
@@ -235,6 +252,7 @@ files:
235
252
  - lib/postmarkdown/version.rb
236
253
  - postmarkdown.gemspec
237
254
  - readme.md
255
+ - spec/helpers/post_helper_spec.rb
238
256
  - spec/integrations/posts_spec.rb
239
257
  - spec/internal/.gitignore
240
258
  - spec/internal/app/posts/2011-04-01-first-post.markdown
@@ -243,11 +261,13 @@ files:
243
261
  - spec/internal/app/posts/2011-05-01-full-metadata.markdown
244
262
  - spec/internal/app/posts/2015-02-13-custom-title.markdown
245
263
  - spec/internal/app/views/layouts/application.html.erb
264
+ - spec/internal/app/views/layouts/custom_layout.html.erb
246
265
  - spec/internal/config/database.yml
247
266
  - spec/internal/config/environments/test.rb
248
267
  - spec/internal/config/routes.rb
249
268
  - spec/internal/db/schema.rb
250
269
  - spec/internal/log/.gitignore
270
+ - spec/lib/generators/postmarkdown/post_generator_spec.rb
251
271
  - spec/models/posts_spec.rb
252
272
  - spec/requests/assets_spec.rb
253
273
  - spec/requests/views_spec.rb
@@ -260,6 +280,7 @@ files:
260
280
  - spec/support/data/posts/2011-05-02-md-file-extension.md
261
281
  - spec/support/data/posts/2011-05-02-mdown-file-extension.mdown
262
282
  - spec/support/data/posts/2011-05-02-mkd-file-extension.mkd
283
+ - spec/support/data/posts/2012-02-13-102030-custom-title-and-timestamp.markdown
263
284
  - spec/support/data/posts/2015-02-13-custom-title.markdown
264
285
  - spec/support/data/posts/missing-date-from-filename.markdown
265
286
  - spec/support/rails_app/.gitignore
@@ -290,7 +311,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
290
311
  version: '0'
291
312
  segments:
292
313
  - 0
293
- hash: -4469381754881994462
314
+ hash: -2900006150133001093
294
315
  required_rubygems_version: !ruby/object:Gem::Requirement
295
316
  none: false
296
317
  requirements:
@@ -299,14 +320,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
299
320
  version: '0'
300
321
  segments:
301
322
  - 0
302
- hash: -4469381754881994462
323
+ hash: -2900006150133001093
303
324
  requirements: []
304
325
  rubyforge_project: postmarkdown
305
- rubygems_version: 1.8.23
326
+ rubygems_version: 1.8.24
306
327
  signing_key:
307
328
  specification_version: 3
308
329
  summary: A simple Rails blog engine powered by markdown.
309
330
  test_files:
331
+ - spec/helpers/post_helper_spec.rb
310
332
  - spec/integrations/posts_spec.rb
311
333
  - spec/internal/.gitignore
312
334
  - spec/internal/app/posts/2011-04-01-first-post.markdown
@@ -315,11 +337,13 @@ test_files:
315
337
  - spec/internal/app/posts/2011-05-01-full-metadata.markdown
316
338
  - spec/internal/app/posts/2015-02-13-custom-title.markdown
317
339
  - spec/internal/app/views/layouts/application.html.erb
340
+ - spec/internal/app/views/layouts/custom_layout.html.erb
318
341
  - spec/internal/config/database.yml
319
342
  - spec/internal/config/environments/test.rb
320
343
  - spec/internal/config/routes.rb
321
344
  - spec/internal/db/schema.rb
322
345
  - spec/internal/log/.gitignore
346
+ - spec/lib/generators/postmarkdown/post_generator_spec.rb
323
347
  - spec/models/posts_spec.rb
324
348
  - spec/requests/assets_spec.rb
325
349
  - spec/requests/views_spec.rb
@@ -332,6 +356,7 @@ test_files:
332
356
  - spec/support/data/posts/2011-05-02-md-file-extension.md
333
357
  - spec/support/data/posts/2011-05-02-mdown-file-extension.mdown
334
358
  - spec/support/data/posts/2011-05-02-mkd-file-extension.mkd
359
+ - spec/support/data/posts/2012-02-13-102030-custom-title-and-timestamp.markdown
335
360
  - spec/support/data/posts/2015-02-13-custom-title.markdown
336
361
  - spec/support/data/posts/missing-date-from-filename.markdown
337
362
  - spec/support/rails_app/.gitignore