orthorings 0.3.1 → 0.4.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.
- data/README.markdown +112 -47
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/app/controllers/orthor_content_controller.rb +5 -5
- data/lib/orthor/category.rb +8 -5
- data/lib/orthor/collections.rb +12 -12
- data/lib/orthor/object.rb +9 -8
- data/lib/orthor/page.rb +2 -2
- data/lib/orthor/query.rb +1 -1
- data/lib/orthor/site.rb +14 -6
- data/lib/orthor/static_page.rb +4 -5
- data/lib/orthor/templates.rb +22 -0
- data/lib/orthor_helper.rb +12 -12
- data/lib/orthorings.rb +72 -24
- data/lib/sinatra/orthor.rb +6 -6
- data/orthorings.gemspec +16 -9
- data/spec/orthor/dsl_spec.rb +146 -160
- data/spec/orthor/templates_spec.rb +63 -0
- data/spec/orthor_helper_spec.rb +13 -18
- data/spec/orthorings_spec.rb +25 -19
- data/spec/resources/homepage.json +1 -0
- data/spec/resources/latest-news-items.json +1 -0
- data/spec/resources/news.json +1 -0
- metadata +39 -13
- data/spec/resources/homepage.html +0 -11
- data/spec/resources/latest-news-items.html +0 -1
- data/spec/resources/news.html +0 -5
data/lib/sinatra/orthor.rb
CHANGED
@@ -8,24 +8,24 @@ module Sinatra
|
|
8
8
|
@name = resource.name
|
9
9
|
@meta_keywords = resource.keywords
|
10
10
|
@meta_description = resource.description
|
11
|
-
@orthor_feeds = resource.respond_to?(:feeds) ? resource.feeds : []
|
11
|
+
@orthor_feeds = resource.respond_to?(:feeds) ? resource.feeds : []
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
module Orthor
|
16
16
|
def self.registered(app)
|
17
17
|
app.helpers ::OrthorHelper
|
18
18
|
app.helpers Sinatra::OrthorRequestHelpers
|
19
|
-
|
19
|
+
|
20
20
|
::Orthor::Site.resources.each do |resource|
|
21
21
|
if resource.is_a?(::Orthor::Category) && !resource.page_path.nil?
|
22
22
|
get resource.page_path do |id|
|
23
|
-
@orthor_content = orthor_content(id)
|
23
|
+
@orthor_content = orthor_content(id, (resource.page_template || resource.template))
|
24
24
|
handle_request(resource)
|
25
25
|
erb (resource.view || "orthor_content").to_sym, { :layout => ::Orthor::Site.layout }
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
get resource.path do
|
30
30
|
if resource.is_a?(::Orthor::Feed)
|
31
31
|
headers['Cache-Control'] = "public, max-age=#{resource.cache_for}"
|
@@ -41,7 +41,7 @@ module Sinatra
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
44
|
-
end
|
44
|
+
end
|
45
45
|
register Orthor
|
46
46
|
end
|
47
47
|
|
data/orthorings.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{orthorings}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Anthony Langhorne"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-06-06}
|
13
13
|
s.email = %q{anthony@orthor.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -35,16 +35,18 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/orthor/query.rb",
|
36
36
|
"lib/orthor/site.rb",
|
37
37
|
"lib/orthor/static_page.rb",
|
38
|
+
"lib/orthor/templates.rb",
|
38
39
|
"lib/orthor_helper.rb",
|
39
40
|
"lib/orthorings.rb",
|
40
41
|
"lib/sinatra/orthor.rb",
|
41
42
|
"orthorings.gemspec",
|
42
43
|
"spec/orthor/dsl_spec.rb",
|
44
|
+
"spec/orthor/templates_spec.rb",
|
43
45
|
"spec/orthor_helper_spec.rb",
|
44
46
|
"spec/orthorings_spec.rb",
|
45
|
-
"spec/resources/homepage.
|
46
|
-
"spec/resources/latest-news-items.
|
47
|
-
"spec/resources/news.
|
47
|
+
"spec/resources/homepage.json",
|
48
|
+
"spec/resources/latest-news-items.json",
|
49
|
+
"spec/resources/news.json",
|
48
50
|
"spec/sinatra/orthor_spec.rb",
|
49
51
|
"spec/spec.opts",
|
50
52
|
"spec/spec_helper.rb"
|
@@ -52,10 +54,11 @@ Gem::Specification.new do |s|
|
|
52
54
|
s.homepage = %q{http://github.com/anthony/orthorings}
|
53
55
|
s.rdoc_options = ["--charset=UTF-8"]
|
54
56
|
s.require_paths = ["lib"]
|
55
|
-
s.rubygems_version = %q{1.3.
|
56
|
-
s.summary = %q{
|
57
|
+
s.rubygems_version = %q{1.3.6}
|
58
|
+
s.summary = %q{A gem for displaying content from orthor.com}
|
57
59
|
s.test_files = [
|
58
60
|
"spec/orthor/dsl_spec.rb",
|
61
|
+
"spec/orthor/templates_spec.rb",
|
59
62
|
"spec/orthor_helper_spec.rb",
|
60
63
|
"spec/orthorings_spec.rb",
|
61
64
|
"spec/sinatra/orthor_spec.rb",
|
@@ -68,10 +71,14 @@ Gem::Specification.new do |s|
|
|
68
71
|
|
69
72
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
70
73
|
s.add_runtime_dependency(%q<moneta>, ["= 0.6.0"])
|
74
|
+
s.add_runtime_dependency(%q<json>, [">= 0"])
|
71
75
|
else
|
72
76
|
s.add_dependency(%q<moneta>, ["= 0.6.0"])
|
77
|
+
s.add_dependency(%q<json>, [">= 0"])
|
73
78
|
end
|
74
79
|
else
|
75
80
|
s.add_dependency(%q<moneta>, ["= 0.6.0"])
|
81
|
+
s.add_dependency(%q<json>, [">= 0"])
|
76
82
|
end
|
77
83
|
end
|
84
|
+
|
data/spec/orthor/dsl_spec.rb
CHANGED
@@ -8,63 +8,54 @@ describe Orthor::Site, "orthor site dsl" do
|
|
8
8
|
layout :application
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
it 'should allow a http cache time to be set' do
|
13
13
|
Orthor::Site.cache_for.should == 7200
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it 'should allow setting of a layout' do
|
17
17
|
Orthor::Site.layout.should == :application
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
[ :categories, :feeds, :pages, :static_pages, :queries ].each do |collection|
|
21
21
|
it "should have a #{collection} array" do
|
22
22
|
Orthor::Site.send(collection).should == []
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
describe "default values" do
|
28
28
|
before(:all) do
|
29
29
|
Orthor::Site.define do
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
it 'should set a default cache for time' do
|
34
34
|
Orthor::Site.cache_for.should == 0
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it 'should set a default layout' do
|
38
38
|
Orthor::Site.layout.should == :orthor_layout
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
describe "children" do
|
43
43
|
before(:all) do
|
44
44
|
Orthor::Site.define do
|
45
|
-
page "/", "
|
45
|
+
page "/", :id => "home"
|
46
46
|
|
47
|
-
query "/news"
|
48
|
-
id "latest-news"
|
49
|
-
end
|
50
|
-
|
51
|
-
category "/writings" do
|
52
|
-
page "/writings/why", "Why we write"
|
47
|
+
query "/news", :id => "latest-news"
|
53
48
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
query "/latest" do
|
60
|
-
id "latest-article"
|
61
|
-
end
|
49
|
+
category "/writings" do
|
50
|
+
page "/writings/why"
|
51
|
+
feed "/writings.rss", :id => "our-writings"
|
52
|
+
query "/latest", :id => "latest-article"
|
62
53
|
|
63
54
|
category "/writings/announcements" do
|
64
|
-
page "/3rd-level"
|
55
|
+
page "/3rd-level"
|
65
56
|
end
|
66
57
|
end
|
67
|
-
end
|
58
|
+
end
|
68
59
|
@category_1 = Orthor::Site.categories.first
|
69
60
|
@category_2 = @category_1.categories.first
|
70
61
|
@feed = @category_1.feeds.first
|
@@ -74,163 +65,146 @@ describe Orthor::Site, "orthor site dsl" do
|
|
74
65
|
@query = Orthor::Site.queries.first
|
75
66
|
@query_1 = @category_1.queries.first
|
76
67
|
end
|
77
|
-
|
68
|
+
|
78
69
|
it 'should return all resources defined in the dsl' do
|
79
70
|
Orthor::Site.resources.length.should == 8
|
80
|
-
|
71
|
+
|
81
72
|
Orthor::Site.resources.should include(@category_1)
|
82
73
|
Orthor::Site.resources.should include(@category_2)
|
83
74
|
Orthor::Site.resources.should include(@feed)
|
84
75
|
Orthor::Site.resources.should include(@page_1)
|
85
76
|
Orthor::Site.resources.should include(@page_2)
|
86
|
-
Orthor::Site.resources.should include(@page_3)
|
77
|
+
Orthor::Site.resources.should include(@page_3)
|
87
78
|
Orthor::Site.resources.should include(@query)
|
88
79
|
Orthor::Site.resources.should include(@query_1)
|
89
80
|
end
|
90
81
|
end
|
91
|
-
|
82
|
+
|
92
83
|
describe "categories" do
|
93
84
|
before(:all) do
|
94
85
|
Orthor::Site.define do
|
95
|
-
category "/writings"
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
page "/writings/why" do
|
103
|
-
name "Why we write"
|
104
|
-
end
|
86
|
+
category "/writings", :id => "blog-writings",
|
87
|
+
:template => :writing,
|
88
|
+
:cache_for => 900,
|
89
|
+
:view => "writings/index",
|
90
|
+
:page_path => "/writings/:id" do
|
91
|
+
page "/writings/why"
|
92
|
+
feed "/writings.rss", :id => "our-writings", :name => "Our Writings"
|
105
93
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
category "/writings/announcements" do
|
112
|
-
page_path "/writings/announcements/:id"
|
113
|
-
name "Announcements"
|
114
|
-
cache_for 300
|
115
|
-
|
116
|
-
page "/3rd-level" do
|
117
|
-
name "3rd level"
|
118
|
-
end
|
94
|
+
category "/writings/announcements", :page_path => "/writings/announcements/:id",
|
95
|
+
:cache_for => 300,
|
96
|
+
:template => :announcement do
|
97
|
+
page "/3rd-level"
|
119
98
|
end
|
120
99
|
end
|
121
100
|
end
|
122
101
|
@category = Orthor::Site.categories.first
|
123
102
|
@category_2 = Orthor::Site.categories.first.categories.first
|
124
103
|
end
|
125
|
-
|
104
|
+
|
126
105
|
it "should have one category at the top level" do
|
127
106
|
Orthor::Site.categories.length.should == 1
|
128
|
-
@category.name.should == "Writings"
|
129
107
|
end
|
130
|
-
|
108
|
+
|
131
109
|
it "should allow you to set a custom view file" do
|
132
110
|
@category.view.should == "writings/index"
|
133
111
|
end
|
134
|
-
|
112
|
+
|
113
|
+
it "should allow setting of a template" do
|
114
|
+
@category.template.should == :writing
|
115
|
+
@category_2.template.should == :announcement
|
116
|
+
end
|
117
|
+
|
135
118
|
it "should support categories in categories" do
|
136
119
|
@category.categories.length.should == 1
|
137
|
-
@category_2.name.should == "Announcements"
|
138
120
|
end
|
139
|
-
|
121
|
+
|
140
122
|
it "should support pages in categories" do
|
141
123
|
@category.pages.length.should == 1
|
142
|
-
@category.pages.first.name.should == "Why we write"
|
143
124
|
end
|
144
|
-
|
125
|
+
|
145
126
|
it "id should be inferred from the path if none is given" do
|
146
127
|
@category_2.id.should == "announcements"
|
147
128
|
end
|
148
|
-
|
129
|
+
|
149
130
|
it "should support pages in categories in categories" do
|
150
131
|
@category_2.pages.length.should == 1
|
151
|
-
@category_2.pages.first.name.should == "3rd level"
|
152
132
|
end
|
153
|
-
|
133
|
+
|
154
134
|
it "should support a child page path attribute" do
|
155
135
|
@category.page_path.should == "/writings/:id"
|
156
136
|
end
|
157
|
-
|
137
|
+
|
158
138
|
it "should support setting the orthor id" do
|
159
139
|
@category.id.should == "blog-writings"
|
160
140
|
end
|
161
|
-
|
141
|
+
|
162
142
|
it "should support specifying http cache time" do
|
163
143
|
@category.cache_for.should == 900
|
164
144
|
@category_2.cache_for.should == 300
|
165
145
|
end
|
166
|
-
|
146
|
+
|
167
147
|
it "should support feeds specific to categories" do
|
168
148
|
@category.feeds.length.should == 1
|
169
|
-
@category.feeds.first.name.should == "Our Writings"
|
170
149
|
end
|
171
150
|
end
|
172
|
-
|
151
|
+
|
173
152
|
describe "pages" do
|
174
153
|
before(:all) do
|
175
154
|
Orthor::Site.define do
|
176
|
-
page "/about-us", "about"
|
177
|
-
|
178
|
-
end
|
155
|
+
page "/about-us", :id => "about"
|
156
|
+
page "/history", :id => "our-history", :template => :basic
|
179
157
|
page "/contact"
|
180
|
-
page "/"
|
181
|
-
|
182
|
-
cache_for 3600
|
183
|
-
id "homepage"
|
184
|
-
view "public/home"
|
185
|
-
end
|
158
|
+
page "/", :cache_for => 3600, :id => "homepage",
|
159
|
+
:view => "public/home", :template => :brief
|
186
160
|
end
|
187
161
|
@page_1 = Orthor::Site.pages[0]
|
188
162
|
@page_2 = Orthor::Site.pages[1]
|
189
163
|
@page_3 = Orthor::Site.pages[2]
|
164
|
+
@page_4 = Orthor::Site.pages[3]
|
190
165
|
end
|
191
|
-
|
166
|
+
|
192
167
|
it 'should support multiple pages' do
|
193
|
-
Orthor::Site.pages.length.should ==
|
168
|
+
Orthor::Site.pages.length.should == 4
|
194
169
|
end
|
195
|
-
|
196
|
-
it 'should support
|
197
|
-
@page_1.name.should == "About us"
|
170
|
+
|
171
|
+
it 'should support storing a page path' do
|
198
172
|
@page_1.path.should == "/about-us"
|
199
|
-
|
200
|
-
@page_3.name.should == "Home"
|
201
|
-
@page_3.path.should == "/"
|
173
|
+
@page_4.path.should == "/"
|
202
174
|
end
|
203
|
-
|
175
|
+
|
176
|
+
it "should allow setting of template" do
|
177
|
+
@page_2.template.should == :basic
|
178
|
+
@page_4.template.should == :brief
|
179
|
+
end
|
180
|
+
|
204
181
|
it "should be able to specify a view to render" do
|
205
|
-
@
|
182
|
+
@page_4.view.should == "public/home"
|
206
183
|
@page_1.view.should be_nil
|
207
184
|
end
|
208
|
-
|
185
|
+
|
209
186
|
it "id should be inferred from the path if none is given" do
|
210
|
-
@
|
187
|
+
@page_3.id.should == "contact"
|
211
188
|
end
|
212
189
|
|
213
190
|
it "id should be 2nd argument if any is given" do
|
214
191
|
@page_1.id.should == "about"
|
215
192
|
end
|
216
|
-
|
193
|
+
|
217
194
|
it 'should allow setting specific http cache lengths' do
|
218
195
|
@page_1.cache_for.should == 0 # sites default
|
219
|
-
@
|
196
|
+
@page_4.cache_for.should == 3600
|
220
197
|
end
|
221
|
-
|
198
|
+
|
222
199
|
it 'should support setting an id' do
|
223
|
-
@
|
200
|
+
@page_4.id.should == "homepage"
|
224
201
|
end
|
225
202
|
end
|
226
203
|
|
227
204
|
describe "queries" do
|
228
205
|
before(:all) do
|
229
206
|
Orthor::Site.define do
|
230
|
-
query "/news"
|
231
|
-
id "news"
|
232
|
-
end
|
233
|
-
|
207
|
+
query "/news", :id => "news", :template => :query
|
234
208
|
query "/latest-release"
|
235
209
|
end
|
236
210
|
@query_1 = Orthor::Site.queries.first
|
@@ -241,6 +215,10 @@ describe Orthor::Site, "orthor site dsl" do
|
|
241
215
|
Orthor::Site.queries.length.should == 2
|
242
216
|
end
|
243
217
|
|
218
|
+
it "should support setting a template" do
|
219
|
+
@query_1.template.should == :query
|
220
|
+
end
|
221
|
+
|
244
222
|
it "should support setting a query id" do
|
245
223
|
@query_1.id.should == "news"
|
246
224
|
end
|
@@ -249,64 +227,86 @@ describe Orthor::Site, "orthor site dsl" do
|
|
249
227
|
@query_2.id.should == "latest-release"
|
250
228
|
end
|
251
229
|
end
|
252
|
-
|
253
|
-
describe "
|
230
|
+
|
231
|
+
describe "with layout" do
|
254
232
|
before(:all) do
|
255
233
|
Orthor::Site.define do
|
256
|
-
|
257
|
-
|
258
|
-
|
234
|
+
with_template :spike do
|
235
|
+
page "/"
|
236
|
+
category "/news" do
|
237
|
+
template :spike_v2
|
238
|
+
end
|
259
239
|
end
|
260
|
-
|
261
|
-
|
262
|
-
|
240
|
+
|
241
|
+
with_template :jet do
|
242
|
+
query "/latest-news"
|
243
|
+
page "/about"
|
263
244
|
end
|
264
245
|
end
|
265
|
-
|
246
|
+
@page_1 = Orthor::Site.pages[0]
|
247
|
+
@page_2 = Orthor::Site.pages[1]
|
248
|
+
@query = Orthor::Site.queries[0]
|
249
|
+
@category = Orthor::Site.categories[0]
|
250
|
+
end
|
251
|
+
|
252
|
+
it "should respect with_template" do
|
253
|
+
@page_1.template.should == :spike
|
254
|
+
@page_2.template.should == :jet
|
255
|
+
@query.template.should == :jet
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should allow with_template to be overriden" do
|
259
|
+
@category.template.should == :spike_v2
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
describe "feeds" do
|
264
|
+
before(:all) do
|
265
|
+
Orthor::Site.define do
|
266
|
+
feed "/blog.rss", :id => "orthor-blog",
|
267
|
+
:name => "Our blag"
|
268
|
+
feed "/bookmarks.rss", :name => "Our bookmarks"
|
269
|
+
end
|
270
|
+
|
266
271
|
@feed_1 = Orthor::Site.feeds.first
|
267
272
|
@feed_2 = Orthor::Site.feeds.last
|
268
273
|
end
|
269
|
-
|
274
|
+
|
270
275
|
it "should support multiple feeds" do
|
271
276
|
Orthor::Site.feeds.length.should == 2
|
272
277
|
end
|
273
|
-
|
278
|
+
|
274
279
|
it "should support setting a feeds id" do
|
275
280
|
@feed_1.id.should == "orthor-blog"
|
276
281
|
end
|
277
|
-
|
282
|
+
|
278
283
|
it "id should be inferred from the path if none is given" do
|
279
284
|
@feed_2.id.should == "bookmarks.rss"
|
280
285
|
end
|
281
|
-
|
286
|
+
|
282
287
|
it 'should support setting a feeds name' do
|
283
288
|
@feed_1.name.should == "Our blag"
|
284
289
|
@feed_2.name.should == "Our bookmarks"
|
285
290
|
end
|
286
|
-
|
291
|
+
|
287
292
|
it 'should store the given path' do
|
288
293
|
@feed_1.path.should == "/blog.rss"
|
289
294
|
@feed_2.path.should == "/bookmarks.rss"
|
290
295
|
end
|
291
296
|
end
|
292
|
-
|
297
|
+
|
293
298
|
describe 'static pages' do
|
294
299
|
before(:all) do
|
295
300
|
Orthor::Site.define do
|
296
|
-
static_page "/about-us"
|
297
|
-
static_page "/contact"
|
298
|
-
static_page "/"
|
299
|
-
name "Home"
|
300
|
-
cache_for 3600
|
301
|
-
view :blah
|
302
|
-
controller :asdf
|
303
|
-
end
|
301
|
+
static_page "/about-us"
|
302
|
+
static_page "/contact"
|
303
|
+
static_page "/", :cache_for => 3600, :view => :blah, :controller => :asdf
|
304
304
|
end
|
305
305
|
@page_1 = Orthor::Site.static_pages[0]
|
306
306
|
@page_2 = Orthor::Site.static_pages[1]
|
307
307
|
@page_3 = Orthor::Site.static_pages[2]
|
308
308
|
end
|
309
|
-
|
309
|
+
|
310
310
|
it 'should support multiple pages' do
|
311
311
|
Orthor::Site.static_pages.length.should == 3
|
312
312
|
end
|
@@ -318,37 +318,29 @@ describe Orthor::Site, "orthor site dsl" do
|
|
318
318
|
it 'should support setting controller' do
|
319
319
|
@page_3.controller.should == :asdf
|
320
320
|
end
|
321
|
-
|
322
|
-
it 'should support
|
323
|
-
@page_1.name.should == "About us"
|
321
|
+
|
322
|
+
it 'should support storing page path' do
|
324
323
|
@page_1.path.should == "/about-us"
|
325
|
-
|
326
|
-
@page_3.name.should == "Home"
|
327
324
|
@page_3.path.should == "/"
|
328
325
|
end
|
329
|
-
|
326
|
+
|
330
327
|
it 'should allow setting specific http cache lengths' do
|
331
328
|
@page_3.cache_for.should == 3600
|
332
329
|
end
|
333
330
|
end
|
334
|
-
|
331
|
+
|
335
332
|
describe 'finding by path' do
|
336
333
|
before(:all) do
|
337
334
|
Orthor::Site.define do
|
338
|
-
page "/"
|
339
|
-
|
340
|
-
category "/writings" do
|
341
|
-
page_path "/writings/:id"
|
342
|
-
page "/writings/why", "Why we write"
|
335
|
+
page "/"
|
343
336
|
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
337
|
+
category "/writings", :page_path => "/writings/:id" do
|
338
|
+
page "/writings/why"
|
339
|
+
feed "/writings.rss", :id => "our-writings",
|
340
|
+
:name => "Our Writings"
|
348
341
|
|
349
|
-
category "/writings/announcements" do
|
350
|
-
|
351
|
-
page "/3rd-level", "3rd level"
|
342
|
+
category "/writings/announcements", :page_path => "/writings/announcements/:id" do
|
343
|
+
page "/3rd-level"
|
352
344
|
end
|
353
345
|
end
|
354
346
|
end
|
@@ -358,66 +350,60 @@ describe Orthor::Site, "orthor site dsl" do
|
|
358
350
|
@announcements = @writings.categories.first
|
359
351
|
@third_level = @announcements.pages.first
|
360
352
|
end
|
361
|
-
|
353
|
+
|
362
354
|
it 'should be able to find pages by path' do
|
363
355
|
Orthor::Site.find_resource_by_path("/").should == @home
|
364
356
|
Orthor::Site.find_resource_by_path("/3rd-level").should == @third_level
|
365
357
|
end
|
366
|
-
|
358
|
+
|
367
359
|
it 'should be able to find feeds by path' do
|
368
360
|
Orthor::Site.find_resource_by_path("/writings.rss").should == @feed
|
369
361
|
end
|
370
|
-
|
362
|
+
|
371
363
|
it 'should be able to find categories by path' do
|
372
364
|
Orthor::Site.find_resource_by_path("/writings").should == @writings
|
373
365
|
Orthor::Site.find_resource_by_path("/writings/announcements").should == @announcements
|
374
366
|
end
|
375
|
-
|
367
|
+
|
376
368
|
it 'should find the parent category by page path' do
|
377
369
|
Orthor::Site.find_resource_by_page_path("/writings/announcements/first-entry", "first-entry").should == @announcements
|
378
370
|
Orthor::Site.find_resource_by_page_path("/writings/first-writing", "first-writing").should == @writings
|
379
371
|
end
|
380
372
|
end
|
381
|
-
|
373
|
+
|
382
374
|
describe 'meta data' do
|
383
375
|
before(:all) do
|
384
376
|
Orthor::Site.define do
|
385
377
|
keywords "asdf, bob, frank"
|
386
378
|
description "a site being defined"
|
387
|
-
|
388
|
-
page "/features", "
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
category "/news", "News" do
|
394
|
-
keywords "category"
|
395
|
-
description "category description"
|
396
|
-
end
|
397
|
-
|
379
|
+
|
380
|
+
page "/features", :keywords => "features",
|
381
|
+
:description => "feature page description"
|
382
|
+
category "/news", :keywords => "category",
|
383
|
+
:description => "category description"
|
398
384
|
page "/ihavenothing"
|
399
385
|
end
|
400
|
-
|
386
|
+
|
401
387
|
@page_with_meta = Orthor::Site.pages.first
|
402
388
|
@category = Orthor::Site.categories.first
|
403
389
|
@page_no_meta = Orthor::Site.pages.last
|
404
390
|
end
|
405
|
-
|
391
|
+
|
406
392
|
it 'should allow setting of meta data at a site level' do
|
407
393
|
Orthor::Site.keywords.should == "asdf, bob, frank"
|
408
394
|
Orthor::Site.description.should == "a site being defined"
|
409
395
|
end
|
410
|
-
|
396
|
+
|
411
397
|
it 'should allow setting of meta data at a page level' do
|
412
398
|
@page_with_meta.keywords.should == "features"
|
413
399
|
@page_with_meta.description.should == "feature page description"
|
414
400
|
end
|
415
|
-
|
401
|
+
|
416
402
|
it 'should allow setting of meta data at a category level' do
|
417
403
|
@category.keywords.should == "category"
|
418
404
|
@category.description.should == "category description"
|
419
405
|
end
|
420
|
-
|
406
|
+
|
421
407
|
it 'should default to sites meta data if none given' do
|
422
408
|
@page_no_meta.keywords.should == "asdf, bob, frank"
|
423
409
|
@page_no_meta.description.should == "a site being defined"
|