hackety_sling 0.0.4 → 0.1.0
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.
- checksums.yaml +7 -0
- data/.travis.yml +1 -0
- data/README.md +1 -1
- data/hackety_sling.gemspec +0 -1
- data/lib/sinatra/hackety_sling/version.rb +1 -1
- data/lib/sinatra/hackety_sling.rb +7 -7
- data/test/hackety_sling_test.rb +24 -44
- data/test/post_test.rb +2 -2
- metadata +41 -46
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 148a5cee29c169c17d8a2c85a2171273e27d885af0354dd72dda8f07b9168ae8
|
4
|
+
data.tar.gz: f67df9aa1312ac1738b73e3c77d9a8c6a806bf8d27b48c37ea071de0bd415a08
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0b5fd361da1b5191af6f9d779736ffa9044ab5517a1f7fe1173aa9eb055218f285267017fa7f2c14db63cc95e91ff784f4261307b699ba32c9982560b5049df9
|
7
|
+
data.tar.gz: da9aa15e248076a4fdee6f1ccf9c213e815a846ae5af49eece3aefa9c1031bc599f680d82343b5449538f3626697aee745b7823b10f7fe06d8808f21b1439174
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
data/hackety_sling.gemspec
CHANGED
@@ -16,7 +16,6 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
17
|
s.require_paths = ['lib']
|
18
18
|
s.add_dependency 'document_mapper'
|
19
|
-
s.add_dependency 'erubis'
|
20
19
|
s.add_dependency 'sinatra'
|
21
20
|
s.add_dependency 'ratom'
|
22
21
|
s.add_development_dependency 'rack-test'
|
@@ -16,13 +16,13 @@ module Sinatra
|
|
16
16
|
erb :index
|
17
17
|
end
|
18
18
|
|
19
|
-
app.get '/archive
|
20
|
-
@posts = Post.order_by(:date => :
|
19
|
+
app.get '/archive/?' do
|
20
|
+
@posts = Post.order_by(:date => :desc).all
|
21
21
|
erb :post_list
|
22
22
|
end
|
23
23
|
|
24
24
|
%w(tags author).each do |attribute|
|
25
|
-
app.get "/#{attribute}/:value
|
25
|
+
app.get "/#{attribute}/:value/?" do |value|
|
26
26
|
@posts = Post.order_by(:date => :desc)
|
27
27
|
@posts = @posts.where(attribute.to_sym.include => value).all
|
28
28
|
erb :posts
|
@@ -30,18 +30,18 @@ module Sinatra
|
|
30
30
|
end
|
31
31
|
|
32
32
|
Post.all.each do |post|
|
33
|
-
app.get post.permalink do
|
33
|
+
app.get "#{post.permalink}?" do
|
34
34
|
@post = post
|
35
35
|
erb :post
|
36
36
|
end
|
37
|
-
base_name = post.file_name_without_extension.sub(
|
38
|
-
app.get "/#{base_name}
|
37
|
+
base_name = post.file_name_without_extension.sub(/\d{4}-\d{2}-\d{2}-/, '')
|
38
|
+
app.get "/#{base_name}/?" do
|
39
39
|
redirect post.permalink, 301
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
ymd = [:year, :month, :day]
|
44
|
-
app.get %r{
|
44
|
+
app.get %r{/(\d{4}/?)(\d{2}/?)?(\d{2}/?)?} do
|
45
45
|
selector_hash = {}
|
46
46
|
params[:captures].each_with_index do |date_part, index|
|
47
47
|
selector_hash[ymd[index]] = date_part.to_i unless date_part.nil?
|
data/test/hackety_sling_test.rb
CHANGED
@@ -23,95 +23,72 @@ describe TestApp do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
describe 'when requesting the index path' do
|
26
|
-
it '
|
26
|
+
it 'displays the 2 most current posts by default' do
|
27
27
|
get '/'
|
28
28
|
assert last_response.ok?
|
29
|
-
|
30
|
-
refute last_response.body.include? @post_titles[1]
|
31
|
-
assert last_response.body.include? @post_titles[2]
|
32
|
-
assert last_response.body.include? @post_titles[3]
|
29
|
+
assert_equal ['Test post 4', 'Test post 3'], post_titles
|
33
30
|
end
|
34
31
|
|
35
|
-
it 'the number of posts
|
32
|
+
it 'the number of posts is configurable' do
|
36
33
|
app.set :hackety_sling_posts_on_index, 3
|
37
34
|
get '/'
|
35
|
+
app.set :hackety_sling_posts_on_index, 2 # set back to original value
|
38
36
|
assert last_response.ok?
|
39
|
-
|
40
|
-
assert last_response.body.include? @post_titles[1]
|
41
|
-
assert last_response.body.include? @post_titles[2]
|
42
|
-
assert last_response.body.include? @post_titles[3]
|
37
|
+
assert_equal ['Test post 4', 'Test post 3', 'Test post 2'], post_titles
|
43
38
|
end
|
44
39
|
end
|
45
40
|
|
46
41
|
describe 'when requesting posts by time' do
|
47
|
-
it '
|
42
|
+
it 'shows all posts of one year' do
|
48
43
|
get '/2010/'
|
49
44
|
assert last_response.ok?
|
50
|
-
|
51
|
-
assert last_response.body.include? @post_titles[1]
|
52
|
-
assert last_response.body.include? @post_titles[2]
|
53
|
-
refute last_response.body.include? @post_titles[3]
|
45
|
+
assert_equal ['Test post 3', 'Test post 2', 'Test post 1'], post_titles
|
54
46
|
end
|
55
47
|
|
56
|
-
it '
|
48
|
+
it 'shows all posts of one month' do
|
57
49
|
get '/2010/11/'
|
58
50
|
assert last_response.ok?
|
59
|
-
|
60
|
-
refute last_response.body.include? @post_titles[1]
|
61
|
-
assert last_response.body.include? @post_titles[2]
|
62
|
-
refute last_response.body.include? @post_titles[3]
|
51
|
+
assert_equal ['Test post 3'], post_titles
|
63
52
|
end
|
64
53
|
|
65
|
-
it '
|
54
|
+
it 'shows all posts of one day' do
|
66
55
|
get '/2010/08/10/'
|
67
56
|
assert last_response.ok?
|
68
|
-
|
69
|
-
assert last_response.body.include? @post_titles[1]
|
70
|
-
refute last_response.body.include? @post_titles[2]
|
71
|
-
refute last_response.body.include? @post_titles[3]
|
57
|
+
assert_equal ['Test post 2'], post_titles
|
72
58
|
end
|
73
59
|
end
|
74
60
|
|
75
61
|
describe 'when requesting a certain blog post' do
|
76
|
-
it '
|
62
|
+
it 'shows the blog post' do
|
77
63
|
get '/2010/11/13/test-post-3/'
|
78
64
|
assert last_response.ok?
|
79
|
-
|
80
|
-
refute last_response.body.include? @post_titles[1]
|
81
|
-
assert last_response.body.include? @post_titles[2]
|
82
|
-
refute last_response.body.include? @post_titles[3]
|
65
|
+
assert_equal ['Test post 3'], post_titles
|
83
66
|
end
|
84
67
|
|
85
|
-
it '
|
68
|
+
it 'redirects to the url with date if only the slug was given' do
|
86
69
|
get '/test-post-2/'
|
87
70
|
assert_redirected_to '/2010/08/10/test-post-2/', 301
|
88
71
|
end
|
89
72
|
end
|
90
73
|
|
91
74
|
describe 'when requesting posts by tag' do
|
92
|
-
it '
|
75
|
+
it 'shows all posts with a certain tag' do
|
93
76
|
get '/tags/ruby/'
|
94
77
|
assert last_response.ok?
|
95
|
-
|
96
|
-
assert last_response.body.include? @post_titles[1]
|
97
|
-
refute last_response.body.include? @post_titles[2]
|
98
|
-
refute last_response.body.include? @post_titles[3]
|
78
|
+
assert_equal ['Test post 2', 'Test post 1'], post_titles
|
99
79
|
end
|
100
80
|
end
|
101
81
|
|
102
82
|
describe 'when requesting posts by author' do
|
103
|
-
it '
|
83
|
+
it 'shows all posts with a certain author' do
|
104
84
|
get '/author/ralph/'
|
105
85
|
assert last_response.ok?
|
106
|
-
|
107
|
-
refute last_response.body.include? @post_titles[1]
|
108
|
-
assert last_response.body.include? @post_titles[2]
|
109
|
-
refute last_response.body.include? @post_titles[3]
|
86
|
+
assert_equal ['Test post 3'], post_titles
|
110
87
|
end
|
111
88
|
end
|
112
89
|
|
113
90
|
describe 'when requesting the archive page' do
|
114
|
-
it '
|
91
|
+
it 'responds to the archive path' do
|
115
92
|
get '/archive/'
|
116
93
|
assert last_response.ok?
|
117
94
|
@post_titles.each do |post_title|
|
@@ -121,7 +98,7 @@ describe TestApp do
|
|
121
98
|
end
|
122
99
|
|
123
100
|
describe 'the atom feed' do
|
124
|
-
it '
|
101
|
+
it 'is generated ok' do
|
125
102
|
get '/atom.xml'
|
126
103
|
assert last_response.ok?
|
127
104
|
end
|
@@ -138,5 +115,8 @@ describe TestApp do
|
|
138
115
|
assert status == last_response.status, status_msg
|
139
116
|
assert (path == redirect_url || url(path) == redirect_url), location_msg
|
140
117
|
end
|
141
|
-
end
|
142
118
|
|
119
|
+
def post_titles
|
120
|
+
last_response.body.scan(/Test post \d/)
|
121
|
+
end
|
122
|
+
end
|
data/test/post_test.rb
CHANGED
@@ -9,11 +9,11 @@ require 'sinatra/hackety_sling/post'
|
|
9
9
|
include Sinatra::HacketySling
|
10
10
|
|
11
11
|
describe Post do
|
12
|
-
it '
|
12
|
+
it 'returns the correct date permalink' do
|
13
13
|
assert_equal '/2010/08/09/', Post.order_by(:title => :asc).first.date_permalink
|
14
14
|
end
|
15
15
|
|
16
|
-
it '
|
16
|
+
it 'returns the correct permalink' do
|
17
17
|
assert_equal '/2010/08/09/test-post-1/', Post.order_by(:title => :asc).first.permalink
|
18
18
|
end
|
19
19
|
end
|
metadata
CHANGED
@@ -1,82 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hackety_sling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ralph von der Heyden
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2022-07-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: document_mapper
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: erubis
|
27
|
-
requirement: &70301858857080 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
23
|
requirements:
|
30
|
-
- -
|
24
|
+
- - ">="
|
31
25
|
- !ruby/object:Gem::Version
|
32
26
|
version: '0'
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70301858857080
|
36
27
|
- !ruby/object:Gem::Dependency
|
37
28
|
name: sinatra
|
38
|
-
requirement:
|
39
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
40
30
|
requirements:
|
41
|
-
- -
|
31
|
+
- - ">="
|
42
32
|
- !ruby/object:Gem::Version
|
43
33
|
version: '0'
|
44
34
|
type: :runtime
|
45
35
|
prerelease: false
|
46
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: ratom
|
49
|
-
requirement:
|
50
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
51
44
|
requirements:
|
52
|
-
- -
|
45
|
+
- - ">="
|
53
46
|
- !ruby/object:Gem::Version
|
54
47
|
version: '0'
|
55
48
|
type: :runtime
|
56
49
|
prerelease: false
|
57
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
58
55
|
- !ruby/object:Gem::Dependency
|
59
56
|
name: rack-test
|
60
|
-
requirement:
|
61
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
62
58
|
requirements:
|
63
|
-
- -
|
59
|
+
- - ">="
|
64
60
|
- !ruby/object:Gem::Version
|
65
61
|
version: '0'
|
66
62
|
type: :development
|
67
63
|
prerelease: false
|
68
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: RedCloth
|
71
|
-
requirement:
|
72
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
73
72
|
requirements:
|
74
|
-
- -
|
73
|
+
- - ">="
|
75
74
|
- !ruby/object:Gem::Version
|
76
75
|
version: '0'
|
77
76
|
type: :development
|
78
77
|
prerelease: false
|
79
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
80
83
|
description: A simple blog engine based on Sinatra and document_mapper
|
81
84
|
email:
|
82
85
|
- ralph@rvdh.de
|
@@ -84,8 +87,8 @@ executables: []
|
|
84
87
|
extensions: []
|
85
88
|
extra_rdoc_files: []
|
86
89
|
files:
|
87
|
-
- .gitignore
|
88
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
89
92
|
- Gemfile
|
90
93
|
- README.md
|
91
94
|
- Rakefile
|
@@ -106,33 +109,25 @@ files:
|
|
106
109
|
- views/posts.erb
|
107
110
|
homepage: http://rvdh.de
|
108
111
|
licenses: []
|
112
|
+
metadata: {}
|
109
113
|
post_install_message:
|
110
114
|
rdoc_options: []
|
111
115
|
require_paths:
|
112
116
|
- lib
|
113
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
118
|
requirements:
|
116
|
-
- -
|
119
|
+
- - ">="
|
117
120
|
- !ruby/object:Gem::Version
|
118
121
|
version: '0'
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
hash: -4069875926690539564
|
122
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
123
|
requirements:
|
125
|
-
- -
|
124
|
+
- - ">="
|
126
125
|
- !ruby/object:Gem::Version
|
127
126
|
version: '0'
|
128
|
-
segments:
|
129
|
-
- 0
|
130
|
-
hash: -4069875926690539564
|
131
127
|
requirements: []
|
132
|
-
|
133
|
-
rubygems_version: 1.8.10
|
128
|
+
rubygems_version: 3.1.6
|
134
129
|
signing_key:
|
135
|
-
specification_version:
|
130
|
+
specification_version: 4
|
136
131
|
summary: A simple blog engine based on Sinatra and document_mapper
|
137
132
|
test_files:
|
138
133
|
- test/hackety_sling_test.rb
|