webby 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/Manifest.txt +45 -2
- data/Rakefile +1 -2
- data/examples/webby/content/css/site.css +1 -1
- data/examples/webby/content/learn/index.txt +1 -1
- data/examples/webby/content/release-notes/index.txt +21 -0
- data/examples/webby/content/release-notes/rel-0-9-0/index.txt +1 -0
- data/examples/webby/content/release-notes/rel-0-9-1/index.txt +93 -0
- data/examples/webby/content/tips_and_tricks/index.txt +14 -13
- data/examples/webby/content/tutorial/index.txt +13 -9
- data/examples/webby/content/user-manual/index.txt +8 -8
- data/examples/webby/layouts/default.txt +1 -1
- data/lib/webby.rb +2 -1
- data/lib/webby/apps/main.rb +25 -13
- data/lib/webby/auto_builder.rb +2 -0
- data/lib/webby/builder.rb +2 -5
- data/lib/webby/filters.rb +5 -13
- data/lib/webby/renderer.rb +7 -5
- data/lib/webby/resources.rb +54 -14
- data/lib/webby/resources/db.rb +4 -4
- data/lib/webby/resources/layout.rb +14 -23
- data/lib/webby/resources/meta_file.rb +208 -0
- data/lib/webby/resources/page.rb +21 -58
- data/lib/webby/resources/partial.rb +10 -4
- data/lib/webby/resources/resource.rb +68 -27
- data/lib/webby/resources/static.rb +6 -22
- data/lib/webby/stelan/paginator.rb +17 -2
- data/spec/data/Sitefile +9 -0
- data/spec/data/content/_partial.txt +10 -0
- data/spec/data/content/css/coderay.css +111 -0
- data/spec/data/content/css/site.css +67 -0
- data/spec/data/content/css/tumblog.css +308 -0
- data/spec/data/content/images/tumblog/permalink.gif +0 -0
- data/spec/data/content/images/tumblog/rss.gif +0 -0
- data/spec/data/content/index.txt +19 -0
- data/spec/data/content/photos.txt +21 -0
- data/spec/data/content/tumblog/200806/the-noble-chicken/index.txt +12 -0
- data/spec/data/content/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/index.txt +12 -0
- data/spec/data/content/tumblog/200807/mad-city-chickens/index.txt +10 -0
- data/spec/data/content/tumblog/200807/the-wisdom-of-the-dutch/index.txt +11 -0
- data/spec/data/content/tumblog/200807/up-a-tree/index.txt +13 -0
- data/spec/data/content/tumblog/index.txt +37 -0
- data/spec/data/content/tumblog/rss.txt +37 -0
- data/spec/data/hooligans/bad_meta_data_1.txt +34 -0
- data/spec/data/hooligans/bad_meta_data_2.txt +34 -0
- data/spec/data/layouts/default.txt +58 -0
- data/spec/data/layouts/tumblog/default.txt +44 -0
- data/spec/data/layouts/tumblog/post.txt +15 -0
- data/spec/data/lib/breadcrumbs.rb +28 -0
- data/spec/data/lib/tumblog_helper.rb +32 -0
- data/spec/data/tasks/tumblog.rake +30 -0
- data/spec/data/templates/_partial.erb +10 -0
- data/spec/data/templates/atom_feed.erb +40 -0
- data/spec/data/templates/page.erb +18 -0
- data/spec/data/templates/presentation.erb +40 -0
- data/spec/data/templates/tumblog/conversation.erb +12 -0
- data/spec/data/templates/tumblog/link.erb +10 -0
- data/spec/data/templates/tumblog/photo.erb +13 -0
- data/spec/data/templates/tumblog/post.erb +12 -0
- data/spec/data/templates/tumblog/quote.erb +11 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/webby/apps/generator_spec.rb +4 -0
- data/spec/webby/apps/main_spec.rb +16 -3
- data/spec/webby/filters/textile_spec.rb +20 -0
- data/spec/webby/renderer_spec.rb +139 -0
- data/spec/webby/resources/db_spec.rb +250 -0
- data/spec/webby/resources/layout_spec.rb +83 -0
- data/spec/webby/resources/meta_file_spec.rb +157 -0
- data/spec/webby/resources/page_spec.rb +111 -0
- data/spec/webby/resources/partial_spec.rb +58 -0
- data/spec/webby/resources/resource_spec.rb +214 -0
- data/spec/webby/resources/static_spec.rb +49 -0
- data/spec/webby/resources_spec.rb +55 -3
- metadata +64 -6
- data/lib/webby/resources/file.rb +0 -221
- data/spec/webby/resources/file_spec.rb +0 -104
@@ -0,0 +1,11 @@
|
|
1
|
+
---
|
2
|
+
title: The Wisdom of the Dutch
|
3
|
+
created_at: 2008-07-26 16:11:39.658919 -06:00
|
4
|
+
author: Not Tim Pease
|
5
|
+
filter:
|
6
|
+
- textile
|
7
|
+
layout: tumblog/post
|
8
|
+
tumblog_type: quote
|
9
|
+
---
|
10
|
+
<big>“</big> You can't hatch chickens from fried eggs.
|
11
|
+
%(source)Dutch Proverb%
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
title: Up a Tree
|
3
|
+
created_at: 2008-07-06 16:09:49.530410 -06:00
|
4
|
+
author: Tim Pease
|
5
|
+
filter:
|
6
|
+
- erb
|
7
|
+
- textile
|
8
|
+
layout: tumblog/post
|
9
|
+
tumblog_type: photo
|
10
|
+
---
|
11
|
+
!http://www.madcitychickens.com/images/bttrcups_tree.jpg(<%= h(@page.title) %>)!
|
12
|
+
|
13
|
+
p(caption). via "Mad City Chickens":http://www.madcitychickens.com/
|
@@ -0,0 +1,37 @@
|
|
1
|
+
---
|
2
|
+
title: A Mother Clucker
|
3
|
+
author: Tim Pease
|
4
|
+
layout: tumblog/default
|
5
|
+
filter: erb
|
6
|
+
dirty: true
|
7
|
+
---
|
8
|
+
<% prev = nil
|
9
|
+
posts = @pages.find(
|
10
|
+
:all,
|
11
|
+
:layout => 'tumblog/post',
|
12
|
+
:sort_by => :created_at,
|
13
|
+
:reverse => true
|
14
|
+
)
|
15
|
+
paginate(posts, 4) do |p| -%>
|
16
|
+
<div class="post">
|
17
|
+
<% if prev != p.created_at.strftime('%Y%m%d') -%>
|
18
|
+
<%= tumblog_date(p.created_at) %>
|
19
|
+
<% prev = p.created_at.strftime('%Y%m%d')
|
20
|
+
end -%>
|
21
|
+
<a href="<%= p.url %>">
|
22
|
+
<img src="/images/tumblog/permalink.gif" class="permalink" alt="permalink" />
|
23
|
+
</a>
|
24
|
+
|
25
|
+
<div class="<%= p.tumblog_type %>">
|
26
|
+
<% if p.title -%>
|
27
|
+
<h2><%= link_to_page(p) %></h2>
|
28
|
+
<% end -%>
|
29
|
+
<%= render(p) %>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<% end -%>
|
33
|
+
|
34
|
+
<% content_for :footer do -%>
|
35
|
+
<%= link_to("« Prev", @pager.prev) if @pager.prev? %>
|
36
|
+
<%= link_to("Next »", @pager.next) if @pager.next? %>
|
37
|
+
<% end -%>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
---
|
2
|
+
title: A Mother Clucker
|
3
|
+
subtitle: raising chickens in the city
|
4
|
+
site: example.com
|
5
|
+
author: Tim Pease
|
6
|
+
email: author@example.com
|
7
|
+
extension: xml
|
8
|
+
layout: nil
|
9
|
+
dirty: true
|
10
|
+
filter: erb
|
11
|
+
---
|
12
|
+
<?xml version="1.0" encoding="utf-8"?>
|
13
|
+
<feed xmlns="http://www.w3.org/2005/Atom">
|
14
|
+
|
15
|
+
<title><%= h(@page.title) %></title>
|
16
|
+
<subtitle><%= h(@page.subtitle) %></subtitle>
|
17
|
+
<link href="http://<%= @page.site %>/tumblog/" rel="self" />
|
18
|
+
<link href="http://<%= @page.site %>/" />
|
19
|
+
<updated><%= Time.now.xmlschema %></updated>
|
20
|
+
<author>
|
21
|
+
<name><%= h(@page.author) %></name>
|
22
|
+
<email><%= h(@page.email) %></email>
|
23
|
+
</author>
|
24
|
+
<id>http://<%= @page.site %>/</id>
|
25
|
+
<% @pages.find(:limit => 10,
|
26
|
+
:layout => 'tumblog/post',
|
27
|
+
:sort_by => 'created_at',
|
28
|
+
:reverse => true).each do |article| %>
|
29
|
+
<entry>
|
30
|
+
<title><%= h(article.title) %></title>
|
31
|
+
<link href="<%= article.url %>" />
|
32
|
+
<id>tag:<%= @page.site %>,<%= article.created_at.strftime('%Y-%m-%d') %>:<%= article.created_at.to_i %></id>
|
33
|
+
<updated><%= article.created_at.xmlschema %></updated>
|
34
|
+
<content type="html"><%= h(render(article)) %></content>
|
35
|
+
</entry>
|
36
|
+
<% end %>
|
37
|
+
</feed>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
title: Bad Meta-Data 1
|
3
|
+
created_at: 2007-08-29 08:57:11.000000 -06:00
|
4
|
+
filter: textile
|
5
|
+
---
|
6
|
+
h2. Pagination
|
7
|
+
|
8
|
+
Pagination is the process of organizing information onto a page such that a fixed number of items appear on each page. Webby provides some methods for paginating information.
|
9
|
+
|
10
|
+
Let's assume that your website has a collection of articles in a folder called "articles" in the content directory. The goal is to display these articles ten at a time in reverse chronological order.
|
11
|
+
|
12
|
+
<pre>
|
13
|
+
---
|
14
|
+
title: Articles
|
15
|
+
filter:
|
16
|
+
- erb
|
17
|
+
- textile
|
18
|
+
---
|
19
|
+
h2. <%= h(@page.title) %>
|
20
|
+
|
21
|
+
<%
|
22
|
+
articles = @pages.find(:all, :in_directory => "articles",
|
23
|
+
:sort_by => "mtime", :reverse => true)
|
24
|
+
paginate(articles, 10) do |page|
|
25
|
+
%>
|
26
|
+
<%= page.render %>
|
27
|
+
<hr />
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<%= link_to("Prev", @pager.prev) if @pager.prev? %>
|
31
|
+
<%= link_to("Next", @pager.next) if @pager.next? %>
|
32
|
+
</pre>
|
33
|
+
|
34
|
+
In the example page above, the first step is get the collection of articles we are interested in the paginating. This is done using the <code>@pages.find</code> method to retrieve all the pages from the articles folder sorted in reverse order by modification time. When we have the collection of articles, we pass them to the @paginate@ method along with the desired number of articles per page. The @paginate@ method will pass each page in the @articles@ collection to the supplied block of code, but for each ten pages passed to the block, a new webpage will be created.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
title: Bad Meta-Data 2
|
3
|
+
created_at: 2007-08-29 08:57:11.000000 -06:00
|
4
|
+
filter:
|
5
|
+
- erb
|
6
|
+
- textile
|
7
|
+
---
|
8
|
+
h3. Requirements
|
9
|
+
|
10
|
+
Webby is written in the Ruby programming language. To install and run Webby you will need the following applications installed on your system:
|
11
|
+
|
12
|
+
* "Ruby":http://ruby-lang.org
|
13
|
+
* "RubyGems":http://rubygems.org/read/chapter/3
|
14
|
+
|
15
|
+
h3(#pages). Pages
|
16
|
+
|
17
|
+
Pages are found in the _content_ folder along with regular files. Pages contain *meta-data* at the top of the file; this is what differentiates a page from a regular file. The meta-data is a section of "YAML":http://www.yaml.org/spec/1.1/ formatted text that describes various properties and attributes of the page. These attributes are used by Webby to determine how the page will be processed by the filter engine.
|
18
|
+
|
19
|
+
Let's look at an example page.
|
20
|
+
|
21
|
+
<pre>
|
22
|
+
---
|
23
|
+
title: Lorem Ipsum
|
24
|
+
created_at: Wed Aug 29 08:57:00 -0600 2007
|
25
|
+
filter:
|
26
|
+
- erb
|
27
|
+
- textile
|
28
|
+
---
|
29
|
+
h2. <%%= @page.title %>
|
30
|
+
|
31
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc congue ipsum
|
32
|
+
vestibulum libero. Aenean vitae justo. Nam eget tellus. Etiam convallis, est eu
|
33
|
+
lobortis mattis, lectus tellus tempus felis, a ultricies erat ipsum at metus.
|
34
|
+
</pre>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
extension: html
|
3
|
+
filter: erb
|
4
|
+
---
|
5
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
6
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
7
|
+
|
8
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
|
9
|
+
<head>
|
10
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
11
|
+
<title><%= @page.title %></title>
|
12
|
+
<meta name="author" content="<%= @page.author %>" />
|
13
|
+
|
14
|
+
<!--- Blueprint CSS Framework -->
|
15
|
+
<link rel="stylesheet" href="/css/blueprint/screen.css" type="text/css" media="screen, projection" />
|
16
|
+
<link rel="stylesheet" href="/css/blueprint/print.css" type="text/css" media="print" />
|
17
|
+
|
18
|
+
<!-- CodeRay syntax highlighting CSS -->
|
19
|
+
<link rel="stylesheet" href="/css/coderay.css" type="text/css" />
|
20
|
+
|
21
|
+
<!-- Homepage CSS -->
|
22
|
+
<link rel="stylesheet" href="/css/site.css" type="text/css" media="screen, projection" />
|
23
|
+
</head>
|
24
|
+
<body>
|
25
|
+
|
26
|
+
<div class="container">
|
27
|
+
|
28
|
+
<div class="column span-20 prepend-2 append-2 first last" id="header">
|
29
|
+
<p class="title">A New Website</p>
|
30
|
+
<hr>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div class="column span-15 prepend-2 first">
|
34
|
+
<%= @content %>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div class="column span-5 append-2 last">
|
38
|
+
<h4>Sidebar</h4>
|
39
|
+
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. </p>
|
40
|
+
|
41
|
+
<div class="box">
|
42
|
+
<p class="last">Mauris a lectus. Aliquam erat volutpat. Phasellus ultrices mi a sapien. Nunc rutrum egestas lorem. Duis ac sem sagittis elit tincidunt gravida.</p>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<p class="quiet">Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue.</p>
|
46
|
+
|
47
|
+
<h5>Incremental leading</h5>
|
48
|
+
<p class="incr">Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus.</p>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div class="column span-20 prepend-2 append-2 first last" id="footer">
|
52
|
+
<hr />
|
53
|
+
<p>This website was created with <a href="http://webby.rubyforge.org">Webby</a></p>
|
54
|
+
</div>
|
55
|
+
|
56
|
+
</div>
|
57
|
+
</body>
|
58
|
+
</html>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
---
|
2
|
+
extension: html
|
3
|
+
filter: erb
|
4
|
+
---
|
5
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
6
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
7
|
+
|
8
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-us">
|
9
|
+
<head>
|
10
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
11
|
+
<title><%= h(@page.title) %></title>
|
12
|
+
<meta name="author" content="<%= h(@page.author) %>" />
|
13
|
+
<link rel="alternate" type="application/atom+xml" title="RSS" href="/tumblog/rss.xml"/>
|
14
|
+
|
15
|
+
|
16
|
+
<link rel="stylesheet" href="/css/tumblog.css" type="text/css" media="screen, projection" />
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
|
20
|
+
<h1>
|
21
|
+
<a href="/">Fowl Friends</a>
|
22
|
+
<a href="/tumblog/rss.xml"><img src="/images/tumblog/rss.gif" id="rss" alt="RSS" /></a>
|
23
|
+
</h1>
|
24
|
+
|
25
|
+
<div id="content">
|
26
|
+
<div id="description">
|
27
|
+
<div>
|
28
|
+
<p><a href="/tumblog/archive">Archive</a></p>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<%= @content %>
|
33
|
+
|
34
|
+
<div id="footer">
|
35
|
+
<%= content_for :footer %>
|
36
|
+
|
37
|
+
<div id="credit">
|
38
|
+
Powered by <a href="http://webby.rubyforge.org/">Webby</a>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
</body>
|
44
|
+
</html>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
filter: erb
|
3
|
+
layout: tumblog/default
|
4
|
+
---
|
5
|
+
<div class="post">
|
6
|
+
<%= tumblog_date(@page.created_at) %>
|
7
|
+
<a href="<%= @page.url %>">
|
8
|
+
<img src="/images/tumblog/permalink.gif" class="permalink" alt="permalink" />
|
9
|
+
</a>
|
10
|
+
|
11
|
+
<div class="<%= @page.tumblog_type %>">
|
12
|
+
<h2><%= link_to_page(@page) %></h2>
|
13
|
+
<%= @content %>
|
14
|
+
</div>
|
15
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# breadcrumbs.rb
|
2
|
+
|
3
|
+
module BreadcrumbsHelper
|
4
|
+
# call-seq:
|
5
|
+
# breadcrumbs( page ) => html
|
6
|
+
#
|
7
|
+
# Create breadcrumb links for the current page. This will return an HTML
|
8
|
+
# <ul></ul> object.
|
9
|
+
#
|
10
|
+
def breadcrumbs( page )
|
11
|
+
list = ["<li>#{h(page.title)}</li>"]
|
12
|
+
loop do
|
13
|
+
page = @pages.parent_of(page)
|
14
|
+
break if page.nil?
|
15
|
+
list << "<li>#{link_to_page(page)}</li>"
|
16
|
+
end
|
17
|
+
list.reverse!
|
18
|
+
|
19
|
+
html = "<ul class=\"breadcrumbs\">\n"
|
20
|
+
html << list.join("\n")
|
21
|
+
html << "\n</ul>\n"
|
22
|
+
html
|
23
|
+
end
|
24
|
+
end # module Breadcrumbs
|
25
|
+
|
26
|
+
Webby::Helpers.register(BreadcrumbsHelper)
|
27
|
+
|
28
|
+
# EOF
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module TumblogHelper
|
5
|
+
|
6
|
+
DAYS = {}
|
7
|
+
(1..31).each {|day| DAYS[day] = "%dth" % day}
|
8
|
+
DAYS[1] = "1st"
|
9
|
+
DAYS[2] = "2nd"
|
10
|
+
DAYS[3] = "3rd"
|
11
|
+
DAYS[21] = "21st"
|
12
|
+
DAYS[22] = "22nd"
|
13
|
+
DAYS[23] = "23rd"
|
14
|
+
DAYS[31] = "31st"
|
15
|
+
|
16
|
+
def tumblog_date( time )
|
17
|
+
<<-HTML
|
18
|
+
<div class="date">
|
19
|
+
<div class="date_brick">
|
20
|
+
#{Time::RFC2822_MONTH_NAME.at(time.month-1)}<br />
|
21
|
+
#{TumblogHelper::DAYS[time.day]}
|
22
|
+
</div>
|
23
|
+
#{Time::RFC2822_DAY_NAME.at(time.wday)}
|
24
|
+
</div>
|
25
|
+
HTML
|
26
|
+
end
|
27
|
+
|
28
|
+
end # module TumblogHelper
|
29
|
+
|
30
|
+
Webby::Helpers.register(TumblogHelper)
|
31
|
+
|
32
|
+
# EOF
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
namespace :tumblog do
|
3
|
+
|
4
|
+
# iterate over all the files in the "templates/tumblog" folder and create a
|
5
|
+
# rake task corresponding to each file found
|
6
|
+
FileList["#{Webby.site.template_dir}/tumblog/*"].each do |template|
|
7
|
+
next unless test(?f, template)
|
8
|
+
name = template.pathmap('%n')
|
9
|
+
|
10
|
+
desc "Create a new tumblog #{name}"
|
11
|
+
task name do |t|
|
12
|
+
page = Webby.site.args.page
|
13
|
+
title = Webby.site.args.title
|
14
|
+
dir = Webby.site.args.dir
|
15
|
+
|
16
|
+
# if no directory was given use the default tumblog directory (underneath
|
17
|
+
# the content directory)
|
18
|
+
dir = Webby.site.tumblog_dir if dir.empty?
|
19
|
+
dir = File.join(dir, Time.now.strftime('%Y%m'))
|
20
|
+
|
21
|
+
page = File.join(dir, File.basename(page))
|
22
|
+
page = Webby::Builder.create(page, :from => template,
|
23
|
+
:locals => {:title => title, :directory => dir})
|
24
|
+
exec(::Webby.editor, page) unless ::Webby.editor.nil?
|
25
|
+
end
|
26
|
+
end # each
|
27
|
+
|
28
|
+
end # namespace :tumblog
|
29
|
+
|
30
|
+
# EOF
|
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
filter: erb
|
3
|
+
---
|
4
|
+
A partial has access to the page from which it was called. The title below will be the title of the page in which this partial is rendered.
|
5
|
+
|
6
|
+
<%%= h(@page.title) %>
|
7
|
+
|
8
|
+
A partial does not have access to it's own meta-data. The partial meta-data is used primarily for finding partials or for use in other pages. The filter(s) specified in the meta-data will be applied to the partial text when it is rendered.
|
9
|
+
|
10
|
+
A partial does not require meta-data at all. They can contain just text.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
---
|
2
|
+
title: A New Atom Feed
|
3
|
+
subtitle: A really swell blog built with Webby
|
4
|
+
site: fake-n-site.org
|
5
|
+
author: Author's Name
|
6
|
+
email: author@fake-n-site.org
|
7
|
+
extension: xml
|
8
|
+
layout: nil
|
9
|
+
dirty: true
|
10
|
+
filter: erb
|
11
|
+
---
|
12
|
+
<?xml version="1.0" encoding="utf-8"?>
|
13
|
+
<feed xmlns="http://www.w3.org/2005/Atom">
|
14
|
+
|
15
|
+
<title><%%= h(@page.title) %></title>
|
16
|
+
<subtitle><%%= h(@page.subtitle) %></subtitle>
|
17
|
+
<link href="http://<%%= @page.site %>/<%= directory %>/" rel="self" />
|
18
|
+
<link href="http://<%%= @page.site %>/" />
|
19
|
+
<updated><%%= Time.now.xmlschema %></updated>
|
20
|
+
<author>
|
21
|
+
<name><%%= h(@page.author) %></name>
|
22
|
+
<email><%%= h(@page.email) %></email>
|
23
|
+
</author>
|
24
|
+
<id>http://<%%= @page.site %>/</id>
|
25
|
+
<%% @pages.find(:limit => 10,
|
26
|
+
:in_directory => '<%= directory %>',
|
27
|
+
:recursive => true,
|
28
|
+
:sort_by => 'mtime',
|
29
|
+
:reverse => true).each do |article|
|
30
|
+
next if article == @page
|
31
|
+
%>
|
32
|
+
<entry>
|
33
|
+
<title><%%= h(article.title) %></title>
|
34
|
+
<link href="<%%= article.url %>" />
|
35
|
+
<id>tag:<%%= @page.site %>,<%%= article.created_at.strftime('%Y-%m-%d') %>:<%%= article.created_at.to_i %></id>
|
36
|
+
<updated><%%= article.created_at.xmlschema %></updated>
|
37
|
+
<content type="html"><%%= h(render(article)) %></content>
|
38
|
+
</entry>
|
39
|
+
<%% end %>
|
40
|
+
</feed>
|