webgen 0.5.8 → 0.5.9
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/COPYING +4 -0
- data/ChangeLog +1037 -0
- data/Rakefile +5 -6
- data/THANKS +1 -0
- data/VERSION +1 -1
- data/bin/webgen +1 -1
- data/data/webgen/passive_sources/images/generated_by_webgen.png +0 -0
- data/data/webgen/passive_sources/images/webgen_logo.png +0 -0
- data/data/webgen/passive_sources/stylesheets/coderay-default.css +129 -0
- data/data/webgen/passive_sources/templates/atom_feed.template +38 -0
- data/data/webgen/passive_sources/templates/rss_feed.template +28 -0
- data/data/webgen/passive_sources/templates/sitemap.template +21 -0
- data/data/webgen/resources.yaml +2 -1
- data/data/webgen/website_skeleton/Rakefile +5 -1
- data/doc/contentprocessor/builder.page +2 -2
- data/doc/contentprocessor/erb.page +5 -2
- data/doc/contentprocessor/erubis.page +2 -2
- data/doc/contentprocessor/head.page +21 -0
- data/doc/contentprocessor/tidy.page +14 -0
- data/doc/extensions.page +1 -1
- data/doc/faq.page +2 -2
- data/doc/manual.page +108 -43
- data/doc/reference_configuration.page +83 -5
- data/doc/reference_metainfo.page +24 -4
- data/doc/reference_website_styles.page +2 -2
- data/doc/sourcehandler/feed.page +11 -13
- data/doc/sourcehandler/metainfo.page +10 -3
- data/doc/sourcehandler/page.page +4 -4
- data/doc/sourcehandler/sitemap.page +8 -7
- data/doc/tag/coderay.page +6 -2
- data/doc/tag/includefile.page +1 -1
- data/doc/tag/menu.page +3 -0
- data/lib/webgen/cli/apply_command.rb +1 -1
- data/lib/webgen/cli/utils.rb +2 -2
- data/lib/webgen/common.rb +0 -9
- data/lib/webgen/contentprocessor.rb +18 -3
- data/lib/webgen/contentprocessor/blocks.rb +67 -36
- data/lib/webgen/contentprocessor/builder.rb +5 -2
- data/lib/webgen/contentprocessor/erb.rb +4 -2
- data/lib/webgen/contentprocessor/erubis.rb +5 -2
- data/lib/webgen/contentprocessor/haml.rb +6 -2
- data/lib/webgen/contentprocessor/head.rb +64 -0
- data/lib/webgen/contentprocessor/maruku.rb +3 -1
- data/lib/webgen/contentprocessor/rdiscount.rb +2 -0
- data/lib/webgen/contentprocessor/rdoc.rb +2 -0
- data/lib/webgen/contentprocessor/redcloth.rb +2 -0
- data/lib/webgen/contentprocessor/sass.rb +5 -3
- data/lib/webgen/contentprocessor/tags.rb +40 -24
- data/lib/webgen/contentprocessor/tidy.rb +38 -0
- data/lib/webgen/context.rb +13 -4
- data/lib/webgen/context/render.rb +32 -0
- data/lib/webgen/context/tags.rb +20 -0
- data/lib/webgen/default_config.rb +15 -4
- data/lib/webgen/deprecated.rb +38 -4
- data/lib/webgen/error.rb +135 -0
- data/lib/webgen/node.rb +48 -40
- data/lib/webgen/output.rb +5 -3
- data/lib/webgen/output/filesystem.rb +4 -4
- data/lib/webgen/page.rb +4 -4
- data/lib/webgen/path.rb +161 -58
- data/lib/webgen/source.rb +9 -6
- data/lib/webgen/source/filesystem.rb +1 -1
- data/lib/webgen/source/stacked.rb +13 -5
- data/lib/webgen/source/tararchive.rb +6 -2
- data/lib/webgen/sourcehandler.rb +100 -54
- data/lib/webgen/sourcehandler/base.rb +58 -24
- data/lib/webgen/sourcehandler/copy.rb +6 -5
- data/lib/webgen/sourcehandler/directory.rb +3 -9
- data/lib/webgen/sourcehandler/feed.rb +25 -50
- data/lib/webgen/sourcehandler/fragment.rb +10 -8
- data/lib/webgen/sourcehandler/memory.rb +9 -10
- data/lib/webgen/sourcehandler/metainfo.rb +9 -9
- data/lib/webgen/sourcehandler/page.rb +6 -5
- data/lib/webgen/sourcehandler/sitemap.rb +22 -22
- data/lib/webgen/sourcehandler/template.rb +6 -6
- data/lib/webgen/sourcehandler/virtual.rb +19 -17
- data/lib/webgen/tag/base.rb +27 -27
- data/lib/webgen/tag/breadcrumbtrail.rb +3 -3
- data/lib/webgen/tag/coderay.rb +19 -8
- data/lib/webgen/tag/executecommand.rb +4 -3
- data/lib/webgen/tag/langbar.rb +2 -2
- data/lib/webgen/tag/link.rb +8 -7
- data/lib/webgen/tag/menu.rb +2 -2
- data/lib/webgen/tag/metainfo.rb +1 -1
- data/lib/webgen/tag/relocatable.rb +17 -21
- data/lib/webgen/tag/tikz.rb +7 -10
- data/lib/webgen/tree.rb +7 -7
- data/lib/webgen/version.rb +1 -1
- data/lib/webgen/website.rb +32 -2
- data/misc/default.css +8 -2
- data/misc/default.template +2 -2
- data/misc/logo.svg +313 -0
- data/misc/style.page +1 -1
- data/test/helper.rb +18 -2
- data/test/test_cli.rb +104 -0
- data/test/test_common_sitemap.rb +1 -1
- data/test/test_contentprocessor.rb +8 -2
- data/test/test_contentprocessor_blocks.rb +17 -8
- data/test/test_contentprocessor_builder.rb +13 -2
- data/test/test_contentprocessor_erb.rb +9 -3
- data/test/test_contentprocessor_erubis.rb +9 -3
- data/test/test_contentprocessor_fragments.rb +12 -11
- data/test/test_contentprocessor_haml.rb +11 -2
- data/test/test_contentprocessor_head.rb +44 -0
- data/test/test_contentprocessor_maruku.rb +5 -1
- data/test/test_contentprocessor_rdiscount.rb +4 -0
- data/test/test_contentprocessor_rdoc.rb +4 -0
- data/test/test_contentprocessor_redcloth.rb +5 -1
- data/test/test_contentprocessor_sass.rb +8 -2
- data/test/test_contentprocessor_tags.rb +22 -7
- data/test/test_contentprocessor_tidy.rb +34 -0
- data/test/test_context.rb +39 -0
- data/test/test_error.rb +85 -0
- data/test/test_node.rb +57 -21
- data/test/test_page.rb +23 -5
- data/test/test_path.rb +120 -64
- data/test/test_source_filesystem.rb +1 -1
- data/test/test_source_stacked.rb +19 -6
- data/test/test_sourcehandler_base.rb +63 -50
- data/test/test_sourcehandler_copy.rb +6 -6
- data/test/test_sourcehandler_directory.rb +8 -12
- data/test/test_sourcehandler_feed.rb +15 -7
- data/test/test_sourcehandler_fragment.rb +6 -5
- data/test/test_sourcehandler_main.rb +39 -0
- data/test/test_sourcehandler_memory.rb +4 -4
- data/test/test_sourcehandler_metainfo.rb +20 -11
- data/test/test_sourcehandler_page.rb +10 -10
- data/test/test_sourcehandler_sitemap.rb +24 -5
- data/test/test_sourcehandler_template.rb +18 -15
- data/test/test_sourcehandler_virtual.rb +9 -5
- data/test/test_tag_base.rb +6 -29
- data/test/test_tag_coderay.rb +16 -3
- data/test/test_tag_executecommand.rb +2 -2
- data/test/test_tag_link.rb +5 -4
- data/test/test_tag_menu.rb +15 -15
- data/test/test_tag_metainfo.rb +1 -0
- data/test/test_tag_relocatable.rb +3 -2
- data/test/test_tag_tikz.rb +5 -5
- data/test/test_tree.rb +8 -8
- data/test/test_website.rb +15 -0
- metadata +21 -14
- data/test/test_common.rb +0 -18
data/Rakefile
CHANGED
|
@@ -59,9 +59,9 @@ Webgen::WebgenTask.new('htmldoc') do |site|
|
|
|
59
59
|
prefix = "webgen-website-bundle-"
|
|
60
60
|
config['resources'].select {|name, data| name =~ /^#{prefix}style/}.each do |name, data|
|
|
61
61
|
config['sources'] <<
|
|
62
|
-
["/website_styles/#{name.sub(prefix, '')}", "Webgen::Source::FileSystem", 'misc', 'style.page']
|
|
62
|
+
["/website_styles/#{name.sub(prefix, '')}/", "Webgen::Source::FileSystem", 'misc', 'style.page']
|
|
63
63
|
config['sources'] <<
|
|
64
|
-
["/website_styles/#{name.sub(prefix, '')}", 'Webgen::Source::Resource', name, '/src/**', '/src']
|
|
64
|
+
["/website_styles/#{name.sub(prefix, '')}/", 'Webgen::Source::Resource', name, '/src/**', '/src/']
|
|
65
65
|
end
|
|
66
66
|
config['output'] = ['Webgen::Output::FileSystem', 'htmldoc']
|
|
67
67
|
end
|
|
@@ -171,8 +171,7 @@ EOF
|
|
|
171
171
|
s.add_development_dependency('haml', '>= 2.0.9')
|
|
172
172
|
s.add_development_dependency('builder', '>= 2.1.0')
|
|
173
173
|
s.add_development_dependency('rdoc', '>= 2.4.2')
|
|
174
|
-
s.add_development_dependency('coderay', '>= 0.
|
|
175
|
-
s.add_development_dependency('feedtools', '>= 0.2.29')
|
|
174
|
+
s.add_development_dependency('coderay', '>= 0.8.312')
|
|
176
175
|
s.add_development_dependency('erubis', '>= 2.6.2')
|
|
177
176
|
s.add_development_dependency('rdiscount', '>= 1.2.9')
|
|
178
177
|
s.add_development_dependency('archive-tar-minitar', '>= 0.5.2')
|
|
@@ -279,9 +278,9 @@ The official version is called 'webgen' and can be installed via
|
|
|
279
278
|
prefix = "webgen-website-bundle-"
|
|
280
279
|
config['resources'].select {|name, data| name =~ /^#{prefix}style/}.each do |name, data|
|
|
281
280
|
config['sources'] <<
|
|
282
|
-
["/documentation/website_styles/#{name.sub(prefix, '')}", "Webgen::Source::FileSystem", '../misc', 'style.page']
|
|
281
|
+
["/documentation/website_styles/#{name.sub(prefix, '')}/", "Webgen::Source::FileSystem", '../misc', 'style.page']
|
|
283
282
|
config['sources'] <<
|
|
284
|
-
["/documentation/website_styles/#{name.sub(prefix, '')}", 'Webgen::Source::Resource', name, '/src/**', '/src']
|
|
283
|
+
["/documentation/website_styles/#{name.sub(prefix, '')}/", 'Webgen::Source::Resource', name, '/src/**', '/src/']
|
|
285
284
|
end
|
|
286
285
|
end
|
|
287
286
|
end
|
data/THANKS
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.5.
|
|
1
|
+
0.5.9
|
data/bin/webgen
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/* This file has been generated with the coderay_stylesheet binary from the coderay gem. */
|
|
2
|
+
/* Copyright by Kornelius Kalnbach, licensed under LGPL - see coderay.rubychan.de */
|
|
3
|
+
|
|
4
|
+
.CodeRay {
|
|
5
|
+
background-color: #f8f8f8;
|
|
6
|
+
border: 1px solid silver;
|
|
7
|
+
font-family: 'Courier New', 'Terminal', monospace;
|
|
8
|
+
color: #000;
|
|
9
|
+
}
|
|
10
|
+
.CodeRay pre { margin: 0px }
|
|
11
|
+
|
|
12
|
+
div.CodeRay { }
|
|
13
|
+
|
|
14
|
+
span.CodeRay { white-space: pre; border: 0px; padding: 2px }
|
|
15
|
+
|
|
16
|
+
table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px }
|
|
17
|
+
table.CodeRay td { padding: 2px 4px; vertical-align: top }
|
|
18
|
+
|
|
19
|
+
.CodeRay .line_numbers, .CodeRay .no {
|
|
20
|
+
background-color: #def;
|
|
21
|
+
color: gray;
|
|
22
|
+
text-align: right;
|
|
23
|
+
}
|
|
24
|
+
.CodeRay .line_numbers tt { font-weight: bold }
|
|
25
|
+
.CodeRay .no { padding: 0px 4px }
|
|
26
|
+
.CodeRay .code { width: 100% }
|
|
27
|
+
|
|
28
|
+
ol.CodeRay { font-size: 10pt }
|
|
29
|
+
ol.CodeRay li { white-space: pre }
|
|
30
|
+
|
|
31
|
+
.CodeRay .code pre { overflow: auto }
|
|
32
|
+
|
|
33
|
+
.CodeRay .debug { color:white ! important; background:blue ! important; }
|
|
34
|
+
|
|
35
|
+
.CodeRay .af { color:#00C }
|
|
36
|
+
.CodeRay .an { color:#007 }
|
|
37
|
+
.CodeRay .at { color:#f08 }
|
|
38
|
+
.CodeRay .av { color:#700 }
|
|
39
|
+
.CodeRay .aw { color:#C00 }
|
|
40
|
+
.CodeRay .bi { color:#509; font-weight:bold }
|
|
41
|
+
.CodeRay .c { color:#888; }
|
|
42
|
+
|
|
43
|
+
.CodeRay .ch { color:#04D }
|
|
44
|
+
.CodeRay .ch .k { color:#04D }
|
|
45
|
+
.CodeRay .ch .dl { color:#039 }
|
|
46
|
+
|
|
47
|
+
.CodeRay .cl { color:#B06; font-weight:bold }
|
|
48
|
+
.CodeRay .co { color:#036; font-weight:bold }
|
|
49
|
+
.CodeRay .cr { color:#0A0 }
|
|
50
|
+
.CodeRay .cv { color:#369 }
|
|
51
|
+
.CodeRay .df { color:#099; font-weight:bold }
|
|
52
|
+
.CodeRay .di { color:#088; font-weight:bold }
|
|
53
|
+
.CodeRay .dl { color:black }
|
|
54
|
+
.CodeRay .do { color:#970 }
|
|
55
|
+
.CodeRay .dt { color:#34b }
|
|
56
|
+
.CodeRay .ds { color:#D42; font-weight:bold }
|
|
57
|
+
.CodeRay .e { color:#666; font-weight:bold }
|
|
58
|
+
.CodeRay .en { color:#800; font-weight:bold }
|
|
59
|
+
.CodeRay .er { color:#F00; background-color:#FAA }
|
|
60
|
+
.CodeRay .ex { color:#F00; font-weight:bold }
|
|
61
|
+
.CodeRay .fl { color:#60E; font-weight:bold }
|
|
62
|
+
.CodeRay .fu { color:#06B; font-weight:bold }
|
|
63
|
+
.CodeRay .gv { color:#d70; font-weight:bold }
|
|
64
|
+
.CodeRay .hx { color:#058; font-weight:bold }
|
|
65
|
+
.CodeRay .i { color:#00D; font-weight:bold }
|
|
66
|
+
.CodeRay .ic { color:#B44; font-weight:bold }
|
|
67
|
+
|
|
68
|
+
.CodeRay .il { background: #eee; color: black }
|
|
69
|
+
.CodeRay .il .il { background: #ddd }
|
|
70
|
+
.CodeRay .il .il .il { background: #ccc }
|
|
71
|
+
.CodeRay .il .idl { font-weight: bold; color: #777 }
|
|
72
|
+
|
|
73
|
+
.CodeRay .im { color:#f00; }
|
|
74
|
+
.CodeRay .in { color:#B2B; font-weight:bold }
|
|
75
|
+
.CodeRay .iv { color:#33B }
|
|
76
|
+
.CodeRay .la { color:#970; font-weight:bold }
|
|
77
|
+
.CodeRay .lv { color:#963 }
|
|
78
|
+
.CodeRay .oc { color:#40E; font-weight:bold }
|
|
79
|
+
.CodeRay .of { color:#000; font-weight:bold }
|
|
80
|
+
.CodeRay .op { }
|
|
81
|
+
.CodeRay .pc { color:#038; font-weight:bold }
|
|
82
|
+
.CodeRay .pd { color:#369; font-weight:bold }
|
|
83
|
+
.CodeRay .pp { color:#579; }
|
|
84
|
+
.CodeRay .ps { color:#00C; font-weight: bold; }
|
|
85
|
+
.CodeRay .pt { color:#349; font-weight:bold }
|
|
86
|
+
.CodeRay .r, .kw { color:#080; font-weight:bold }
|
|
87
|
+
|
|
88
|
+
.CodeRay .ke { color: #808; }
|
|
89
|
+
.CodeRay .ke .dl { color: #606; }
|
|
90
|
+
.CodeRay .ke .ch { color: #80f; }
|
|
91
|
+
.CodeRay .vl { color: #088; }
|
|
92
|
+
|
|
93
|
+
.CodeRay .rx { background-color:#fff0ff }
|
|
94
|
+
.CodeRay .rx .k { color:#808 }
|
|
95
|
+
.CodeRay .rx .dl { color:#404 }
|
|
96
|
+
.CodeRay .rx .mod { color:#C2C }
|
|
97
|
+
.CodeRay .rx .fu { color:#404; font-weight: bold }
|
|
98
|
+
|
|
99
|
+
.CodeRay .s { background-color:#fff0f0; color: #D20; }
|
|
100
|
+
.CodeRay .s .s { background-color:#ffe0e0 }
|
|
101
|
+
.CodeRay .s .s .s { background-color:#ffd0d0 }
|
|
102
|
+
.CodeRay .s .k { }
|
|
103
|
+
.CodeRay .s .ch { color: #b0b; }
|
|
104
|
+
.CodeRay .s .dl { color: #710; }
|
|
105
|
+
|
|
106
|
+
.CodeRay .sh { background-color:#f0fff0; color:#2B2 }
|
|
107
|
+
.CodeRay .sh .k { }
|
|
108
|
+
.CodeRay .sh .dl { color:#161 }
|
|
109
|
+
|
|
110
|
+
.CodeRay .sy { color:#A60 }
|
|
111
|
+
.CodeRay .sy .k { color:#A60 }
|
|
112
|
+
.CodeRay .sy .dl { color:#630 }
|
|
113
|
+
|
|
114
|
+
.CodeRay .ta { color:#070 }
|
|
115
|
+
.CodeRay .tf { color:#070; font-weight:bold }
|
|
116
|
+
.CodeRay .ts { color:#D70; font-weight:bold }
|
|
117
|
+
.CodeRay .ty { color:#339; font-weight:bold }
|
|
118
|
+
.CodeRay .v { color:#036 }
|
|
119
|
+
.CodeRay .xt { color:#444 }
|
|
120
|
+
|
|
121
|
+
.CodeRay .ins { background: #afa; }
|
|
122
|
+
.CodeRay .del { background: #faa; }
|
|
123
|
+
.CodeRay .chg { color: #aaf; background: #007; }
|
|
124
|
+
.CodeRay .head { color: #f8f; background: #505 }
|
|
125
|
+
|
|
126
|
+
.CodeRay .ins .ins { color: #080; font-weight:bold }
|
|
127
|
+
.CodeRay .del .del { color: #800; font-weight:bold }
|
|
128
|
+
.CodeRay .chg .chg { color: #66f; }
|
|
129
|
+
.CodeRay .head .head { color: #f4f; }
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
template: ~
|
|
3
|
+
--- pipeline:erb
|
|
4
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
5
|
+
<feed xmlns="http://www.w3.org/2005/Atom">
|
|
6
|
+
<title type="html"><%= h(context.node['title']) %></title>
|
|
7
|
+
<subtitle type="html"><%= h(context.node['description']) %></subtitle>
|
|
8
|
+
<author>
|
|
9
|
+
<name><%= h(context.node['author']) %></name>
|
|
10
|
+
<uri><%= h(context.node['author_url']) %></uri>
|
|
11
|
+
</author>
|
|
12
|
+
|
|
13
|
+
<link href="<%= context.node.feed_link %>" rel="alternate" />
|
|
14
|
+
<generator uri="http://webgen.rubyforge.org/documentation/sourcehandler/feed.html" version="<%= Webgen::VERSION %>">
|
|
15
|
+
webgen - Webgen::SourceHandler::Feed
|
|
16
|
+
</generator>
|
|
17
|
+
<updated><%= Time.now.xmlschema %></updated>
|
|
18
|
+
<id><%= context.node.feed_link %></id>
|
|
19
|
+
|
|
20
|
+
<% context.node.feed_entries.each do |entry| %>
|
|
21
|
+
<entry>
|
|
22
|
+
<title type="html"><%= h(entry['title']) %></title>
|
|
23
|
+
<% if entry['author'] %>
|
|
24
|
+
<author>
|
|
25
|
+
<name><%= h(entry['author']) %></name>
|
|
26
|
+
<uri><%= h(entry['author_url']) %></uri>
|
|
27
|
+
</author>
|
|
28
|
+
<% end %>
|
|
29
|
+
<link href="<%= Webgen::Node.url(File.join(context.node['site_url'], entry.path), false) %>" rel="alternate" />
|
|
30
|
+
<id><%= Webgen::Node.url(File.join(context.node['site_url'], entry.path), false) %></id>
|
|
31
|
+
<updated><%= entry['modified_at'].xmlschema %></updated>
|
|
32
|
+
<% if entry['created_at'].kind_of?(Time) %>
|
|
33
|
+
<published><%= entry['created_at'].xmlschema %></published>
|
|
34
|
+
<% end %>
|
|
35
|
+
<content type="html"><%= h(context.node.entry_content(entry)) %></content>
|
|
36
|
+
</entry>
|
|
37
|
+
<% end %>
|
|
38
|
+
</feed>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
template: ~
|
|
3
|
+
--- pipeline:erb
|
|
4
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
5
|
+
<rss version="2.0">
|
|
6
|
+
<channel>
|
|
7
|
+
<title><%= h(context.node['title']) %></title>
|
|
8
|
+
<link><%= context.node.feed_link %>"</link>
|
|
9
|
+
<description><%= h(context.node['description']) %></description>
|
|
10
|
+
<pubDate><%= Time.now.rfc822 %></pubDate>
|
|
11
|
+
<lastBuildDate><%= Time.now.rfc822 %></lastBuildDate>
|
|
12
|
+
<generator>webgen - Webgen::SourceHandler::Feed</generator>
|
|
13
|
+
|
|
14
|
+
<% context.node.feed_entries.each do |entry| %>
|
|
15
|
+
<item>
|
|
16
|
+
<title><%= h(entry['title']) %></title>
|
|
17
|
+
<link><%= Webgen::Node.url(File.join(context.node['site_url'], entry.path), false) %></link>
|
|
18
|
+
<description><%= h(context.node.entry_content(entry)) %></description>
|
|
19
|
+
<pubDate><%= entry['modified_at'].rfc822 %></pubDate>
|
|
20
|
+
<guid isPermaLink="true"><%= Webgen::Node.url(File.join(context.node['site_url'], entry.path), false) %></guid>
|
|
21
|
+
</item>
|
|
22
|
+
<% end %>
|
|
23
|
+
|
|
24
|
+
</channel>
|
|
25
|
+
</rss>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
template: ~
|
|
3
|
+
--- pipeline:erb
|
|
4
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
5
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
6
|
+
<%
|
|
7
|
+
context.node.alcns.each do |alcn|
|
|
8
|
+
item = context.node.tree[alcn]
|
|
9
|
+
%>
|
|
10
|
+
<url>
|
|
11
|
+
<loc><%= URI.escape(File.join(context.node['site_url'], item.path)) %></loc>
|
|
12
|
+
<lastmod><%= item['modified_at'].iso8601 %></lastmod>
|
|
13
|
+
<changefreq><%= item['change_freq'] || context.node['default_change_freq'] %></changefreq>
|
|
14
|
+
<% if priority = item['priority'] || context.node['default_priority'] %>
|
|
15
|
+
<priority><%= priority %></priority>
|
|
16
|
+
<% end %>
|
|
17
|
+
</url>
|
|
18
|
+
<%
|
|
19
|
+
end
|
|
20
|
+
%>
|
|
21
|
+
</urlset>
|
data/data/webgen/resources.yaml
CHANGED
|
@@ -31,7 +31,11 @@ task :auto_webgen do
|
|
|
31
31
|
# you may need to adjust the glob so that all your sources are included
|
|
32
32
|
paths = Dir['src/**/*'].sort
|
|
33
33
|
if old_paths != paths || paths.any? {|p| File.mtime(p) > time}
|
|
34
|
-
|
|
34
|
+
begin
|
|
35
|
+
Rake::Task['webgen'].execute({})
|
|
36
|
+
rescue Webgen::Error => e
|
|
37
|
+
puts e.message
|
|
38
|
+
end
|
|
35
39
|
end
|
|
36
40
|
time = Time.now
|
|
37
41
|
old_paths = paths
|
|
@@ -48,11 +48,11 @@ Following is a complete example which shows how to use this extension in a page
|
|
|
48
48
|
a custom XML document (the `content` block has to be valid Ruby!):
|
|
49
49
|
|
|
50
50
|
---
|
|
51
|
-
output_path_style: [:parent, :
|
|
51
|
+
output_path_style: [:parent, :basename, ['.', :lang], '.xml']
|
|
52
52
|
title: Person Object
|
|
53
53
|
template: ~
|
|
54
54
|
--- pipeline:builder
|
|
55
|
-
xml.persons(:path => context.node.
|
|
55
|
+
xml.persons(:path => context.node.alcn) do |p|
|
|
56
56
|
p.person do |b|
|
|
57
57
|
b.firstname('Thomas')
|
|
58
58
|
b.lastname('Leitner')
|
|
@@ -8,7 +8,7 @@ a look at its documentation by executing `ri ERB` or the [ruby documentation
|
|
|
8
8
|
site](http://www.ruby-doc.org/)!
|
|
9
9
|
|
|
10
10
|
You can use the special object `context` in your ERB code which provides the whole rendering context
|
|
11
|
-
and the following useful methods:
|
|
11
|
+
and, for example, the following useful methods:
|
|
12
12
|
|
|
13
13
|
* `website`: Provides access to the `Webgen::Website` object which can be used to access all aspects
|
|
14
14
|
of the currently rendered website.
|
|
@@ -22,6 +22,9 @@ and the following useful methods:
|
|
|
22
22
|
* `dest_node`: The node in which the result gets inserted. Should be used for calculating relative
|
|
23
23
|
paths.
|
|
24
24
|
|
|
25
|
+
For a complete list of supported methods have a look at the API documentation for
|
|
26
|
+
[Webgen::Context](../rdoc/Webgen/Context.html).
|
|
27
|
+
|
|
25
28
|
Here is a small usage example. The following put in a page file
|
|
26
29
|
|
|
27
30
|
Counting 5 items dynamically:
|
|
@@ -53,5 +56,5 @@ output the result of the Ruby code (note the equation sign!). And the fourth lin
|
|
|
53
56
|
|
|
54
57
|
> You may need to ensure that the ERB start and end tags are not processed by the content
|
|
55
58
|
> processor. For example, when using the RedCloth content processor, you may need to surround the
|
|
56
|
-
> ERB code with `<
|
|
59
|
+
> ERB code with `<notextile>` tags!
|
|
57
60
|
{.important}
|
|
@@ -25,9 +25,9 @@ following configuration options:
|
|
|
25
25
|
|
|
26
26
|
* `contentprocessor.erubis.use_pi`: Use processing instructions instead of ERB like
|
|
27
27
|
instructions. Normally you use statements like `<%% result = some_method_call(opts) %>` or `<%%=
|
|
28
|
-
context.content_node.
|
|
28
|
+
context.content_node.alcn %>` in your content. When setting this option to `true`, you can
|
|
29
29
|
use XML processing instructions instead, like this: `<?rb result = some_method_call(opts) ?>` or
|
|
30
|
-
`@{context.content_node.
|
|
30
|
+
`@{context.content_node.alcn}@`.
|
|
31
31
|
|
|
32
32
|
* `contentprocessor.erubis.options`: This is hash which is passed to the Erubis interpreter and
|
|
33
33
|
which can be used to set additional options.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Webgen::ContentProcessor::Head
|
|
3
|
+
---
|
|
4
|
+
## Description
|
|
5
|
+
|
|
6
|
+
This processor inserts before the end of the HTML head section links to used javascript and css
|
|
7
|
+
files, inline javascript and css content and general meta tags. This functionality can be used, for
|
|
8
|
+
example, by webgen tags to add needed javascript or css fragments on a page-per-page basis.
|
|
9
|
+
|
|
10
|
+
It can also be used to insert arbitrary meta tags on a page-per-page basis. This can be done by
|
|
11
|
+
setting the meta information named [`meta`]({relocatable: ../reference_metainfo.html#meta}) on a
|
|
12
|
+
page file.
|
|
13
|
+
|
|
14
|
+
This content processor should be used on template files since its output is only useful in the head
|
|
15
|
+
section of an HTML file. And it should be the last content processor in the pipeline because
|
|
16
|
+
otherwise not all needed information is available! There is no need for a special markup since the
|
|
17
|
+
HTML head end tag is unique in a HTML element and therefore the insertion place can easily be found.
|
|
18
|
+
|
|
19
|
+
Developers wanting to use the functionality of this content processor should have a look at its [API
|
|
20
|
+
documentation](../rdoc/Webgen/ContentProcessor/Head.html).
|
|
21
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Webgen::ContentProcessor::Tidy
|
|
3
|
+
---
|
|
4
|
+
## Description
|
|
5
|
+
|
|
6
|
+
This content processor uses the [`tidy`][1] program to convert the input into valid (X)HTML. It
|
|
7
|
+
supports a vast amount of options for specifying how the input should be processed. These options
|
|
8
|
+
can be set throught the configuration option [`contentprocessor.tidy.options`]({relocatable:
|
|
9
|
+
../reference_configuration.html#contentprocessortidyoptions}).
|
|
10
|
+
|
|
11
|
+
The options `-q` and `-f FILE` are always set because they are needed internally and should
|
|
12
|
+
therefore not be set through `contentprocessor.tidy.options`!
|
|
13
|
+
|
|
14
|
+
[1]: http://tidy.sf.net
|
data/doc/extensions.page
CHANGED
|
@@ -6,7 +6,7 @@ title: Extensions
|
|
|
6
6
|
Following is a listing of all available extensions:
|
|
7
7
|
|
|
8
8
|
<%
|
|
9
|
-
pattern = /#{File.join(context.node.parent.
|
|
9
|
+
pattern = /#{File.join(context.node.parent.alcn, '/')}(contentprocessor|output|source|sourcehandler|tag|)\/.*html$/
|
|
10
10
|
context.node.tree.node_access[:alcn].select {|alcn, n| alcn =~ pattern}.sort.each do |alcn, n|
|
|
11
11
|
next if n.is_fragment?
|
|
12
12
|
%>
|
data/doc/faq.page
CHANGED
|
@@ -124,14 +124,14 @@ You have several options of varying granularity:
|
|
|
124
124
|
|
|
125
125
|
default_meta_info:
|
|
126
126
|
:all:
|
|
127
|
-
output_path_style: [:parent, :
|
|
127
|
+
output_path_style: [:parent, :basename, [., :lang], :ext]
|
|
128
128
|
|
|
129
129
|
* Set the meta information `output_path_style` for a specific source handler to only change the
|
|
130
130
|
output paths of this source handler (the page source handler in the following example):
|
|
131
131
|
|
|
132
132
|
default_meta_info:
|
|
133
133
|
Page:
|
|
134
|
-
output_path_style: [:parent, :
|
|
134
|
+
output_path_style: [:parent, :basename, [., :lang], :ext]
|
|
135
135
|
|
|
136
136
|
* Add the meta information `output_path_style` to a single file via, for example, a meta information
|
|
137
137
|
backing file.
|
data/doc/manual.page
CHANGED
|
@@ -38,11 +38,12 @@ Following is a short overview of the available commands:
|
|
|
38
38
|
|
|
39
39
|
* `apply [-f] (BUNDLE_NAME|BUNDLE_URL)`
|
|
40
40
|
|
|
41
|
-
The argument may either be a valid bundle name or an URL
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
The argument may either be a valid bundle name or an URL (in this case you will need to have all
|
|
42
|
+
dependencies for [Source::TarArchive]({relocatable: source/tararchive.html}) installed) to a
|
|
43
|
+
bundle archive (a (gzipped) tar archive). The command applies the bundle to the given webgen
|
|
44
|
+
website. The files that will be written to website directory are shown and the user is asked to
|
|
45
|
+
confirm that the shown files should indeed be written (and sometimes overwritten). If the `-f`
|
|
46
|
+
option is used, the files are always written.
|
|
46
47
|
|
|
47
48
|
You can get the full list of available bundle names by running `webgen help apply`!
|
|
48
49
|
|
|
@@ -253,9 +254,32 @@ feeling of what files are handled by webgen.
|
|
|
253
254
|
## Source Paths Naming Convention {#source-naming}
|
|
254
255
|
|
|
255
256
|
webgen assumes that the paths provided by the sources follow a special naming convention sothat meta
|
|
256
|
-
information can be extracted correctly from the path
|
|
257
|
+
information can be extracted correctly from the path names. There are three different cases
|
|
258
|
+
depending on the type of path (the individual parts of a path are explained below):
|
|
257
259
|
|
|
258
|
-
|
|
260
|
+
* The path specifies a directory. It must end with a slash character and must not contain any hash
|
|
261
|
+
characters. A directory path has to follow the scheme:
|
|
262
|
+
|
|
263
|
+
/parent_path/basename/
|
|
264
|
+
|
|
265
|
+
* The path specifies a file. It must not end with a slash character and must not contain any hash
|
|
266
|
+
characters. A file path has to follow the scheme:
|
|
267
|
+
|
|
268
|
+
/parent_path/[sort_info.]basename[.lang][.extension]
|
|
269
|
+
|
|
270
|
+
* The path specifies a fragment (e.g. part of a file). It must contain exactly one hash character
|
|
271
|
+
and it has to follow the scheme (where `/parent_path` needs to be a file path):
|
|
272
|
+
|
|
273
|
+
/parent_path#basename
|
|
274
|
+
|
|
275
|
+
Following is the explanation of the parts of the path names:
|
|
276
|
+
|
|
277
|
+
* `/parent_path`
|
|
278
|
+
|
|
279
|
+
This part specifies the path of the parent of this path and is used internally to create a
|
|
280
|
+
hierarchy of paths. Although the leading slash is explicitly written here, it is part of the
|
|
281
|
+
parent path, i.e. each parent path begins with a slash. Also note that the parent path will end
|
|
282
|
+
with a slash if it is a directory!
|
|
259
283
|
|
|
260
284
|
* `sort_info`
|
|
261
285
|
|
|
@@ -265,53 +289,85 @@ information can be extracted correctly from the path name:
|
|
|
265
289
|
* `basename`
|
|
266
290
|
|
|
267
291
|
This part is used on the one hand to generate the `title` meta information (but with `_` and `-`
|
|
268
|
-
replaced by spaces). And on the other hand, the canonical name is
|
|
269
|
-
must not contain any dots, spaces or any character from the
|
|
270
|
-
$ ,``. If you do use one of them webgen may not work
|
|
292
|
+
replaced by spaces). And on the other hand, the [canonical name]({relocatable: '#source-cn'}) is
|
|
293
|
+
derived from it. `basename` must not contain any dots, spaces or any character from the
|
|
294
|
+
following list: ``; ? * : ` & = + $ ,``. If you do use one of them, webgen may not work
|
|
295
|
+
correctly!
|
|
271
296
|
|
|
272
|
-
> If two paths have the same `basename` and `extension` part, they should define the same
|
|
297
|
+
> If two file paths have the same `basename` and `extension` part, they should define the same
|
|
273
298
|
> content but for different languages. This allows webgen to automatically deliver the right
|
|
274
|
-
> language version of the content
|
|
299
|
+
> language version of the content.
|
|
275
300
|
{.important}
|
|
276
301
|
|
|
277
302
|
* `lang`
|
|
278
303
|
|
|
279
304
|
This part is optional and has to be an [ISO-639-1/2](http://www.loc.gov/standards/iso639-2/)
|
|
280
|
-
language identifier (two or three characters (a-z) long).
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
305
|
+
language identifier (two or three characters (a-z) long). It can only be specified if an
|
|
306
|
+
extension is also specified. If the file path should not have an extension, then just add a
|
|
307
|
+
trailing dot, e.g. `/dir/file.de.` - the trailing dot is ignored by webgen.
|
|
308
|
+
|
|
309
|
+
If the language part is not specified, it is assumed that the path is language independent (for
|
|
310
|
+
example, images are normally not specific for a specific language). However, this behaviour may
|
|
311
|
+
be different for some source handler classes (for example, all paths handled by
|
|
312
|
+
SourceHandler::Page are assigned the default language if none is set).
|
|
285
313
|
|
|
286
314
|
If the language identifier can't be matched to a valid language, it is assumed that this part
|
|
287
315
|
isn't actually a language identifier but a part of the extension. This also means that in the
|
|
288
316
|
special case where the first part of an extension is also a valid language identifier, the first
|
|
289
|
-
part is interpreted as language identifier and not as part of the extension
|
|
317
|
+
part is interpreted as language identifier and not as part of the extension!
|
|
290
318
|
|
|
291
319
|
* `extension`
|
|
292
320
|
|
|
293
321
|
The file extension can be anything and can include dots.
|
|
294
322
|
|
|
295
|
-
Following are some examples of source path names
|
|
323
|
+
Following are some examples of source path names (the acn and alcn parts are explained
|
|
324
|
+
[below]({relocatable: '#source-cn'})):
|
|
296
325
|
|
|
297
|
-
|Path
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
326
|
+
| Path | Basename | Language | `title` | `sort_info` | acn | alcn |
|
|
327
|
+
|----------------------------|--------------|----------|--------------|-------------|------------------------|-------------------------|
|
|
328
|
+
| `/directory/` | directory | -none- | Directory | -none- | `/directory/` | `/directory/` |
|
|
329
|
+
| `/image.png` | image | -none- | Image | 0 | `/image.png` | `/image.png` |
|
|
330
|
+
| `/image.de.png` | image | de | Image | 0 | `/image.png` | `/image.de.png` |
|
|
331
|
+
| `/01.name_of-file.eo.page` | name_of-file | eo | Name of file | 1 | `/name_of-file.page` | `/name_of-file.eo.page` |
|
|
332
|
+
| `/archive.tar.bz2` | archive | -none- | Archive | 0 | `/archive.tar.bz2` | `/archive.tar.bz2` |
|
|
333
|
+
| `/archive.de.tar.bz2` | archive | de | Archive | 0 | `/archive.tar.bz2` | `/archive.de.tar.bz2` |
|
|
334
|
+
| `/manual.html#sources` | manual | -none- | Manual | -none- | `/manual.html#sources` | `/manual.html#sources` |
|
|
335
|
+
{#source-path-example-table style="border: 1px solid black; width: 100%"}
|
|
304
336
|
|
|
305
|
-
Notice: The first two and the last two examples define the same content for two
|
|
306
|
-
(or more exactly: the first one is unlocalized and the second one
|
|
307
|
-
the same canonical name.
|
|
337
|
+
Notice: The first two file path and the last two file path examples define the same content for two
|
|
338
|
+
different languages (or more exactly: the first one is unlocalized in both cases and the second one
|
|
339
|
+
localized to German) as they have the same canonical name.
|
|
308
340
|
|
|
309
341
|
|
|
310
|
-
## Canonical Name of a File ### {#source-cn}
|
|
342
|
+
## Canonical Name (CN) of a File ### {#source-cn}
|
|
311
343
|
|
|
312
344
|
webgen provides the functionality to define the same content in more than one language, ie. to
|
|
313
345
|
localize content. This is achieved with the _canonical name_ of a path, short CN.
|
|
314
346
|
|
|
347
|
+
The canonical name as well as all the other variants (\[absolute] \[localized] canonical name, all
|
|
348
|
+
described below) are created directly from the source paths sothat one can easily derive the
|
|
349
|
+
canonical name onself. Here are some examples:
|
|
350
|
+
|
|
351
|
+
| Source path | CN | ACN | LCN | ALCN |
|
|
352
|
+
|-----------------------|------------|--------------------|---------------|-----------------------|
|
|
353
|
+
| `/images/test/` | `test/` | `/images/test/` | `test/` | `/images/test/` |
|
|
354
|
+
| `/images/logo.png` | `logo.png` | `/images/logo.png` | `logo.png` | `/images/logo.png` |
|
|
355
|
+
| `/images/logo.de.png` | `logo.png` | `/images/logo.png` | `logo.de.png` | `/images/logo.de.png` |
|
|
356
|
+
| `/test.de.html#frag` | `#frag` | `/test.html#frag` | `#frag` | `/test.de.html#frag` |
|
|
357
|
+
{#cn-example-table style="border: 1px solid black; width: 100%"}
|
|
358
|
+
|
|
359
|
+
What one can immediately see is that if a source path is unlocalized, the CN is the same as the LCN
|
|
360
|
+
and the ACN is the same as the ALCN. This is always true for directory and fragment paths since they
|
|
361
|
+
are always unlocalized! The first example shows a directory path - note the trailing slash! And the
|
|
362
|
+
last example shows a fragment path - note the difference in the ACN and the ALCN! Another
|
|
363
|
+
good-to-know fact is that an LCN is unique within its hierarchy level and that an ALCN is globally
|
|
364
|
+
unique!
|
|
365
|
+
|
|
366
|
+
> Source handlers can change some parts of a source path. For example, the page source handler
|
|
367
|
+
> changes the extension from `page` to `html`. This has to be taken into account when specifying
|
|
368
|
+
> canonical names! These changes are documented on the documentation pages for the source handlers!
|
|
369
|
+
{.information}
|
|
370
|
+
|
|
315
371
|
When multiple paths share the same canonical name, webgen assumes that they have the same content
|
|
316
372
|
but in different languages. It is also possible to specify a _language independent_ path (i.e. one
|
|
317
373
|
without a language) which is used as a fallback. Therefore when a path should be resolved using a
|
|
@@ -344,7 +400,7 @@ specified language is ignored as it is assumed that the user really only wants t
|
|
|
344
400
|
specified language!
|
|
345
401
|
|
|
346
402
|
Continuing the above example, this means that `images/my.de.jpg` is always returned when one
|
|
347
|
-
specifies `images/my.de.jpg` in any of the index page files, e.g. in `index.fr.page`.
|
|
403
|
+
specifies `images/my.de.jpg` in any of the index page files, e.g. even in `index.fr.page`.
|
|
348
404
|
|
|
349
405
|
Both canonical and localized canonical names can be absolute (ACN and ALCN) which is done by using
|
|
350
406
|
the full path starting with a slash. This is especially useful when you don't exactly know in which
|
|
@@ -353,7 +409,9 @@ hierarchy level a certain canoncial name gets evaluated.
|
|
|
353
409
|
Everything said above also means that all paths are not resolved using their real source or output
|
|
354
410
|
names but using the (localized) canonical name! So when specifying paths for extensions, for example
|
|
355
411
|
when using the [relocatable tag]({relocatable: tag/relocatable.html}), you always have to use the
|
|
356
|
-
(absolute) (localized) canonical names. This is different from previous webgen versions!
|
|
412
|
+
(absolute) (localized) canonical names. This is different from previous webgen versions! However, it
|
|
413
|
+
allows for using a naming scheme based on the source paths to be used independently from the output
|
|
414
|
+
paths and therefore the output paths may change but no changes in the files themselves are needed.
|
|
357
415
|
|
|
358
416
|
|
|
359
417
|
## Output Path Name Construction ### {#source-output}
|
|
@@ -370,7 +428,7 @@ information key is an array which can have the following values:
|
|
|
370
428
|
* strings (for inserting arbitrary text into output names)
|
|
371
429
|
* arrays (for grouping values - only interesting for the language part)
|
|
372
430
|
* symbols for inserting special values:
|
|
373
|
-
* `:
|
|
431
|
+
* `:basename`: The basename of the path.
|
|
374
432
|
* `:parent`: The parent path.
|
|
375
433
|
* `:lang`: The language.
|
|
376
434
|
* `:ext`: The file extension including the leading dot.
|
|
@@ -384,7 +442,7 @@ information key is an array which can have the following values:
|
|
|
384
442
|
Following are some examples of output path names for given source path names (assuming that `en` is
|
|
385
443
|
the default language and that the path is under a directory called `/img/`):
|
|
386
444
|
|
|
387
|
-
* `output_path_style=[:parent, :
|
|
445
|
+
* `output_path_style=[:parent, :basename, [., :lang], :ext]` (the default)
|
|
388
446
|
|
|
389
447
|
* `index.jpg` --> `/img/index.jpg`
|
|
390
448
|
|
|
@@ -405,13 +463,13 @@ the default language and that the path is under a directory called `/img/`):
|
|
|
405
463
|
|
|
406
464
|
Since `de` is not the default language, the language part is always used!
|
|
407
465
|
|
|
408
|
-
* `output_path_style=[:parent, :
|
|
466
|
+
* `output_path_style=[:parent, :basename, :ext, ., :lang]`
|
|
409
467
|
|
|
410
468
|
* `index.jpg` --> `/img/index.jpg.`
|
|
411
469
|
|
|
412
470
|
Be aware of the trailing dot since the `:lang` value is not defined in a sub array!
|
|
413
471
|
|
|
414
|
-
* `output_path_style=[:parent, :year, /, :month, /, :
|
|
472
|
+
* `output_path_style=[:parent, :year, /, :month, /, :basename, [., :lang], :ext]`
|
|
415
473
|
|
|
416
474
|
* `index.jpg` --> `/img/2008/09/index.jpg`
|
|
417
475
|
|
|
@@ -537,14 +595,21 @@ There are several types of extensions:
|
|
|
537
595
|
Webgen Page Format. It is not specified how they have to process the content but this type of
|
|
538
596
|
extension can basically be divided into two groups:
|
|
539
597
|
|
|
540
|
-
*
|
|
541
|
-
|
|
542
|
-
|
|
598
|
+
* Text content processors: These processors are used to process textual content like files in
|
|
599
|
+
Webgen Page Format. This group can furthe be divided:
|
|
600
|
+
|
|
601
|
+
* Markup processors: Processors like Maruku or RedCloth belong to this group and they
|
|
602
|
+
convert markup text that is easy to read and write to a more structure format like HTML.
|
|
603
|
+
This allows you to write an HTML page without knowing HTML.
|
|
604
|
+
|
|
605
|
+
* String replacers: These processors normally process special strings and substitute them
|
|
606
|
+
with other content. For example, the `erb` processors replaces delimited strings
|
|
607
|
+
interpreted as Ruby code with the interpreted value. Another example would be webgen's
|
|
608
|
+
`tags` processor which replaces strings like `\{relocatable: ../index.html}` with a
|
|
609
|
+
processed value.
|
|
543
610
|
|
|
544
|
-
*
|
|
545
|
-
|
|
546
|
-
Ruby code with the interpreted value. Another example would be webgen's `tags` processor which
|
|
547
|
-
replaces strings like `\{relocatable: ../index.html}` with a processed value.
|
|
611
|
+
* Binary content processors: These processors are used to process binary data. For example, one
|
|
612
|
+
might want to process an image to produce a thumbnailed version of it.
|
|
548
613
|
|
|
549
614
|
* **Source Handler**: These extensions are used for handling source paths. They read the content of
|
|
550
615
|
a path and produce one or more nodes (the internal representation of an output path, see [source
|