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
|
@@ -163,12 +163,33 @@ configuration options) and/or how to use it in a webgen tag (for tag configurati
|
|
|
163
163
|
|
|
164
164
|
* Example for setting the option in the configuration file:
|
|
165
165
|
|
|
166
|
-
sources: [[/, Webgen::Source::FileSystem, src], [/, Webgen::Source::FileSystem, /mnt/pictures, **/*.jpg]
|
|
166
|
+
sources: [[/, Webgen::Source::FileSystem, src], [/, Webgen::Source::FileSystem, /mnt/pictures, **/*.jpg]]
|
|
167
167
|
|
|
168
168
|
Also have a look at the [file system source documentation]({relocatable:
|
|
169
169
|
source/filesystem.html}) for more examples!
|
|
170
170
|
|
|
171
171
|
|
|
172
|
+
* ### passive\_sources
|
|
173
|
+
|
|
174
|
+
Specifies one or more sources which are not actively used during the node creation time, ie. no
|
|
175
|
+
nodes are created from these sources by default. Instead, they lie dormant until later and are
|
|
176
|
+
only used if resolving a path fails. Then it is checked if a passive source for the requested
|
|
177
|
+
path exists and if so, a node is created from it. If a node created from a passive source is not
|
|
178
|
+
used anymore, it is automatically deleted.
|
|
179
|
+
|
|
180
|
+
* Syntax: `[[MOUNT POINT, NAME, ARG1, ARG2, ...], ...]` where `MOUNT POINT` is the path under
|
|
181
|
+
which the source should be mounted, `NAME` is the name of the source class (for example,
|
|
182
|
+
`Webgen::Source::FileSystem`) and `ARG1`, `ARG2` and so on are the parameters for the source
|
|
183
|
+
class. The supported parameters can be found in the documentation for each source class.
|
|
184
|
+
|
|
185
|
+
<%= show_default['passive_sources'] %>
|
|
186
|
+
|
|
187
|
+
* Example for setting the option in the configuration file:
|
|
188
|
+
|
|
189
|
+
passive_sources:
|
|
190
|
+
[[/, Webgen::Source::Resource, webgen-passive-sources], [/, Webgen::Source::FileSystem, /mnt/pictures, **/*.jpg]]
|
|
191
|
+
|
|
192
|
+
|
|
172
193
|
* ### output
|
|
173
194
|
|
|
174
195
|
Specifies the output class that should be used for writing out the generated paths.
|
|
@@ -184,6 +205,20 @@ configuration options) and/or how to use it in a webgen tag (for tag configurati
|
|
|
184
205
|
output: [Webgen::Output::FileSystem, custom_out]
|
|
185
206
|
|
|
186
207
|
|
|
208
|
+
* ### output.do\_deletion
|
|
209
|
+
|
|
210
|
+
Specifies whether the output class should delete generated paths once the source paths are not
|
|
211
|
+
available anymore.
|
|
212
|
+
|
|
213
|
+
* Syntax: `BOOLEAN` where `BOOLEAN` is either `true` or `false`.
|
|
214
|
+
|
|
215
|
+
<%= show_default['output.do_deletion'] %>
|
|
216
|
+
|
|
217
|
+
* Example for setting the option in the configuration file:
|
|
218
|
+
|
|
219
|
+
output.do_deletion: true
|
|
220
|
+
|
|
221
|
+
|
|
187
222
|
* ### sourcehandler.patterns
|
|
188
223
|
|
|
189
224
|
Specifies the path patterns that are used by the individual source handlers. This configuration
|
|
@@ -295,7 +330,7 @@ configuration options) and/or how to use it in a webgen tag (for tag configurati
|
|
|
295
330
|
|
|
296
331
|
default_meta_info:
|
|
297
332
|
:all:
|
|
298
|
-
output_path_style: [:parent, :
|
|
333
|
+
output_path_style: [:parent, :basename, :lang, :ext]
|
|
299
334
|
Webgen::SourceHandler::Page:
|
|
300
335
|
in_menu: true
|
|
301
336
|
|
|
@@ -319,12 +354,14 @@ configuration options) and/or how to use it in a webgen tag (for tag configurati
|
|
|
319
354
|
* ### contentprocessor.map
|
|
320
355
|
|
|
321
356
|
This configuration option maps short names for content processor to their class names. The short
|
|
322
|
-
names are used, for example, in the
|
|
357
|
+
names are used, for example, in the processing pipeline of a content block of a file in Webgen
|
|
323
358
|
Page Format. This configuration option is normally only used by extensions to register the short
|
|
324
359
|
name of a content processor!
|
|
325
360
|
|
|
326
|
-
* Syntax: `\{SHORT: NAME, ...}` where `SHORT` is the short name of the
|
|
327
|
-
`NAME`.
|
|
361
|
+
* Syntax: `\{SHORT: NAME, SHORT: [NAME, TYPE], ...}` where `SHORT` is the short name of the
|
|
362
|
+
content processor class `NAME`. The second form allows one to additionally specify the type
|
|
363
|
+
`TYPE` of the content processor which has to be `:binary` or `:text`. If the first form is
|
|
364
|
+
used, then the type defaults to `:text`.
|
|
328
365
|
|
|
329
366
|
<%= show_default['contentprocessor.map'] %>
|
|
330
367
|
|
|
@@ -332,6 +369,7 @@ configuration options) and/or how to use it in a webgen tag (for tag configurati
|
|
|
332
369
|
|
|
333
370
|
config = Webgen::WebsiteAccess.website.config
|
|
334
371
|
config['contentprocessor.map']['newcp'] = 'Extension::MyNewContentProcessor'
|
|
372
|
+
config['contentprocessor.map']['newcp'] = ['Extension::MyNewContentProcessor', :binary]
|
|
335
373
|
|
|
336
374
|
|
|
337
375
|
* ### contentprocessor.erubis.use\_pi
|
|
@@ -407,6 +445,20 @@ configuration options) and/or how to use it in a webgen tag (for tag configurati
|
|
|
407
445
|
config['contentprocessor.tags.map']['highlight'] = 'Extension::MyHighlightingTag'
|
|
408
446
|
|
|
409
447
|
|
|
448
|
+
* ### contentprocessor.tidy.options
|
|
449
|
+
|
|
450
|
+
This configuration option can be used to set the command line options for the `tidy` program
|
|
451
|
+
which is used by the [content processor `tidy`]({relocatable: contentprocessor/tidy.html}).
|
|
452
|
+
|
|
453
|
+
* Syntax: `STRING` where `STRING` is the string holding the command line options.
|
|
454
|
+
|
|
455
|
+
<%= show_default['contentprocessor.tidy.options'] %>
|
|
456
|
+
|
|
457
|
+
* Example for setting the option in the configuration file:
|
|
458
|
+
|
|
459
|
+
contentprocessor.tidy.options: "-utf8"
|
|
460
|
+
|
|
461
|
+
|
|
410
462
|
## Tag Specific Options
|
|
411
463
|
|
|
412
464
|
These options are not normally set in the configuration file but given directly as options to the
|
|
@@ -614,6 +666,32 @@ shows how to set the option in the configuration file.
|
|
|
614
666
|
tabulator == 4 spaces: \{coderay:: {lang: ruby, tab_width: 4}}puts 5 + 5{coderay}
|
|
615
667
|
|
|
616
668
|
|
|
669
|
+
* ### tag.coderay.css
|
|
670
|
+
|
|
671
|
+
Specifies how the highlighted code should be styled.
|
|
672
|
+
|
|
673
|
+
If set to `style`, the CSS style attributes are set directly on the various HTML elements.
|
|
674
|
+
|
|
675
|
+
If set to `class`, only classes are set on the HTML elements and a default external stylesheet
|
|
676
|
+
is used - the [content processor head]({relocatable: contentprocessor/head.html}) is needed for
|
|
677
|
+
this to work.
|
|
678
|
+
|
|
679
|
+
If set to `other`, only classes are set like with the `class` value but no default external
|
|
680
|
+
stylesheet is used. You have to provide the styles yourself.
|
|
681
|
+
|
|
682
|
+
* Syntax: `STYLE` where `STYLE` is either `style`, `css` or `other`.
|
|
683
|
+
|
|
684
|
+
<%= show_default['tag.coderay.css'] %>
|
|
685
|
+
|
|
686
|
+
* Example for setting the option in the configuration file:
|
|
687
|
+
|
|
688
|
+
tag.coderay.css: style
|
|
689
|
+
|
|
690
|
+
Example for setting the option directly in a tag:
|
|
691
|
+
|
|
692
|
+
with external stylesheet: \{coderay:: {lang: ruby, css: class}}puts 5 + 5{coderay}
|
|
693
|
+
|
|
694
|
+
|
|
617
695
|
* ### tag.date.format
|
|
618
696
|
|
|
619
697
|
Specifies the format that should be used for formatting the current date. The format string
|
data/doc/reference_metainfo.page
CHANGED
|
@@ -8,7 +8,7 @@ extension, be it a source handler, a tag or any other extension. Each meta infor
|
|
|
8
8
|
follows the same pattern:
|
|
9
9
|
|
|
10
10
|
* First the type of the value and an example value are listed.
|
|
11
|
-
* Then the paths for which this item is
|
|
11
|
+
* Then the paths for which this item is useful are listed.
|
|
12
12
|
* And at last follows a detailed description.
|
|
13
13
|
|
|
14
14
|
|
|
@@ -110,7 +110,7 @@ information for nodes created by them.
|
|
|
110
110
|
|
|
111
111
|
{:miref}
|
|
112
112
|
* String: `de`
|
|
113
|
-
*
|
|
113
|
+
* Any
|
|
114
114
|
|
|
115
115
|
Sets the language for the path. Has to be a valid ISO-639-1/2 character code for the language. This
|
|
116
116
|
meta information needs to be set before a node gets created.
|
|
@@ -124,6 +124,16 @@ meta information needs to be set before a node gets created.
|
|
|
124
124
|
Specifies additional attribute-value pairs (in form of a Hash) that should be added to a link to the
|
|
125
125
|
path.
|
|
126
126
|
|
|
127
|
+
### meta
|
|
128
|
+
|
|
129
|
+
{:miref}
|
|
130
|
+
* Hash: `\{author: Thomas Leitner, generator: My program}`
|
|
131
|
+
* Page files
|
|
132
|
+
|
|
133
|
+
Specifies names and values for `<meta>` HTML tags. These key-value pairs are then properly escaped
|
|
134
|
+
and inserted into the output file by [`ContentProcessor::Head`]({relocatable:
|
|
135
|
+
contentprocessor/head.html}).
|
|
136
|
+
|
|
127
137
|
### modified\_at
|
|
128
138
|
|
|
129
139
|
{:miref}
|
|
@@ -160,11 +170,11 @@ Controls whether the index path should appear in a breadcrumb trail despite the
|
|
|
160
170
|
### output\_path\_style
|
|
161
171
|
|
|
162
172
|
{:miref}
|
|
163
|
-
* Array: `[:parent, :
|
|
173
|
+
* Array: `[:parent, :basename, [., :lang], .html]`
|
|
164
174
|
* Any
|
|
165
175
|
|
|
166
176
|
Sets a custom output path style for the specified path. The basename is substituted for the value
|
|
167
|
-
`:
|
|
177
|
+
`:basename` and the language for the value `:lang`. Strings are used verbatim. If `:lang` is specified
|
|
168
178
|
in a sub-array, the whole sub-array is omitted, if the configuration option
|
|
169
179
|
`sourcehandler.default_lang_in_output_path` is false. For more and detailed information, have look
|
|
170
180
|
at the [output path creation section]({relocatable: manual.html#source-output}) of the manual!
|
|
@@ -220,3 +230,13 @@ Sets the template for the page/template file overriding the default value. If se
|
|
|
220
230
|
* Any
|
|
221
231
|
|
|
222
232
|
Sets the title for the path.
|
|
233
|
+
|
|
234
|
+
### used\_nodes
|
|
235
|
+
|
|
236
|
+
{:miref}
|
|
237
|
+
* Array: `[*.en.html, test.de.html]`
|
|
238
|
+
* Any
|
|
239
|
+
|
|
240
|
+
The value of this meta information needs to be an array of alcn patterns. All nodes that match at
|
|
241
|
+
least one of the patterns are considered to be dependencies of the node. Therefore if any of these
|
|
242
|
+
nodes change, the node will be regenerated, too.
|
|
@@ -17,10 +17,10 @@ browser:
|
|
|
17
17
|
|
|
18
18
|
<%
|
|
19
19
|
context.content_node.tree.node_access[:alcn].select do |name, node|
|
|
20
|
-
node.is_directory? && node.parent == context.content_node.tree[File.join(context.content_node.parent.
|
|
20
|
+
node.is_directory? && node.parent == context.content_node.tree[File.join(context.content_node.parent.alcn, '/website_styles/')]
|
|
21
21
|
end.sort.each do |name, node|
|
|
22
22
|
%>
|
|
23
|
-
<h2 id="<%= node.cn %>"><%= node.cn %></h2>
|
|
23
|
+
<h2 id="<%= node.cn.chomp('/') %>"><%= node.cn %></h2>
|
|
24
24
|
<div class="website-styles">
|
|
25
25
|
<%= context.dest_node.link_to(node, :link_text => "Full window version") %>
|
|
26
26
|
<object type="text/html" data="<%= context.dest_node.route_to(node) %>">Nothing</object>
|
data/doc/sourcehandler/feed.page
CHANGED
|
@@ -7,12 +7,6 @@ This source handler automatically generates an atom or RSS feed for a set of fil
|
|
|
7
7
|
[Webgen Page Format]({relocatable: ../webgen_page_format.html}) (the format which is also used for
|
|
8
8
|
page files).
|
|
9
9
|
|
|
10
|
-
> This extension is only available if you have installed the [feedtools][1] library. The preferred
|
|
11
|
-
> way to do this is via Rubygems:
|
|
12
|
-
>
|
|
13
|
-
> gem install feedtools
|
|
14
|
-
{.warning}
|
|
15
|
-
|
|
16
10
|
The following meta information keys are supported:
|
|
17
11
|
|
|
18
12
|
* `entries` (MANDATORY)
|
|
@@ -31,11 +25,13 @@ The following meta information keys are supported:
|
|
|
31
25
|
|
|
32
26
|
* `atom` (OPTIONAL)
|
|
33
27
|
|
|
34
|
-
An atom feed is generated if this key is set to `true`. Defaults to `true`.
|
|
28
|
+
An atom feed is generated if this key is set to `true`. Defaults to `true`. The generated file
|
|
29
|
+
name derives from the feed file name but the extension is changed to `atom`.
|
|
35
30
|
|
|
36
31
|
* `rss` (OPTIONAL)
|
|
37
32
|
|
|
38
|
-
A RSS feed is generated if this key is set to `true`. Defaults to `true`.
|
|
33
|
+
A RSS feed is generated if this key is set to `true`. Defaults to `true`. The generated file
|
|
34
|
+
name derives from the feed file name but the extension is changed to `rss`.
|
|
39
35
|
|
|
40
36
|
* `rss_version` (OPTIONAL)
|
|
41
37
|
|
|
@@ -98,8 +94,10 @@ The following meta information keys of page files are used if they are specified
|
|
|
98
94
|
|
|
99
95
|
The URL of the homepage of the author. Only used if the `author` meta information is also set.
|
|
100
96
|
|
|
101
|
-
The default implementation supports the generation of atom and RSS feeds
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
97
|
+
The default implementation supports the generation of atom and RSS feeds by using templates shipped
|
|
98
|
+
with webgen (the extension `feed` is changed to `atom` for atom feeds and to `rss` for rss feeds).
|
|
99
|
+
The default templates are located under the ALCNs `/templates/atom_feed.template` and
|
|
100
|
+
`/templates/rss_feed.template` and are automatically created and used if no such paths exist in the
|
|
101
|
+
webgen website. You can also override the default generation mechanism on a file per file basis by
|
|
102
|
+
adding an `atom_template` and/or `rss_template` block in the feed file which are then used to
|
|
103
|
+
generate the atom or the RSS feed respectively.
|
|
@@ -13,16 +13,21 @@ This source handler provides the ability to set meta information for any path. I
|
|
|
13
13
|
* `alcn`: This block specifies meta information for nodes and this meta information is applied
|
|
14
14
|
directly after a node has been created. When specifying patterns, remember that the patterns are
|
|
15
15
|
matched against absolute localized canonical names! So you always need to take the language part
|
|
16
|
-
into account, ie. `/index.html` won't match but `/index.en.html
|
|
16
|
+
into account, ie. `/index.html` won't match but `/index.en.html` will.
|
|
17
17
|
|
|
18
18
|
When no name is specified in the meta information file, the first block is assumed to be the `paths`
|
|
19
19
|
block and the second block is assumed to be the `alcn` block. The format of the two blocks is the
|
|
20
20
|
same: they need to be in YAML format and provide a hash with path patterns as keys and the
|
|
21
|
-
to-be-assigned meta information as values.
|
|
21
|
+
to-be-assigned meta information as values. The patterns can be normal file system paths or node
|
|
22
|
+
(a)lcns but you can also use some special characters like `*` (match any file), `**` (match
|
|
23
|
+
recursively or expansively) and `?` (match a single character). You can find the full information in
|
|
24
|
+
the documentation for [File.fnmatch].
|
|
25
|
+
|
|
26
|
+
All this is best showed in an example:
|
|
22
27
|
|
|
23
28
|
--- name:paths
|
|
24
29
|
/**/index.page:
|
|
25
|
-
output_path_style: [:parent, :
|
|
30
|
+
output_path_style: [:parent, :basename, :ext, [., :lang]]
|
|
26
31
|
|
|
27
32
|
mypic.jpg:
|
|
28
33
|
in_menu: true
|
|
@@ -39,3 +44,5 @@ second form is taken relative to the directory in which the meta information fil
|
|
|
39
44
|
|
|
40
45
|
And last but not least, all nodes with a localized canonical name of `index.en.html` will show up in
|
|
41
46
|
the menu (again, notice that the pattern is relative).
|
|
47
|
+
|
|
48
|
+
[File.fnmatch]: http://ruby-doc.org/core/classes/File.html#M002603
|
data/doc/sourcehandler/page.page
CHANGED
|
@@ -3,10 +3,10 @@ title: Webgen::SourceHandler::Page
|
|
|
3
3
|
---
|
|
4
4
|
## Description
|
|
5
5
|
|
|
6
|
-
This source handler uses page files which are used to specify the actual content for the
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
This source handler uses page files which are used to specify the actual content for the website.
|
|
7
|
+
These files are written using [Webgen Page Format]({relocatable: ../webgen_page_format.html}).
|
|
8
|
+
Therefore they contain the content for the web page and, optionally, meta information. The extension
|
|
9
|
+
`page` is changed to `html` for the output file and canonical names.
|
|
10
10
|
|
|
11
11
|
*In contrast* to other handled files, page files can never be unlocalized! If they have no language
|
|
12
12
|
set, the default language specified using the configuration option `website.lang` is used. This
|
|
@@ -5,13 +5,8 @@ title: Webgen::SourceHandler::Sitemap
|
|
|
5
5
|
|
|
6
6
|
This source handler automatically generates a sitemap based on the specification of
|
|
7
7
|
[sitemaps.org](http://sitemaps.org) from a file in [Webgen Page Format]({relocatable:
|
|
8
|
-
../webgen_page_format.html}).
|
|
9
|
-
|
|
10
|
-
> This extension can only be used if you have installed the [builder](http://builder.rubyforge.org)
|
|
11
|
-
> library. The preferred way to do this is via Rubygems:
|
|
12
|
-
>
|
|
13
|
-
> gem install builder
|
|
14
|
-
{.warning}
|
|
8
|
+
../webgen_page_format.html}). The output and canonical names have the extension `xml` instead of
|
|
9
|
+
`sitemap`.
|
|
15
10
|
|
|
16
11
|
The following meta information keys are supported:
|
|
17
12
|
|
|
@@ -44,3 +39,9 @@ The following meta information keys of files are used if they are specified:
|
|
|
44
39
|
* `priority`
|
|
45
40
|
|
|
46
41
|
The priority of the file in respect to the other files.
|
|
42
|
+
|
|
43
|
+
The generation of the sitemap is done via a template and the template used needs to be located under
|
|
44
|
+
the ALCN `/templates/sitemap.template`. This default template is automatically created and used if
|
|
45
|
+
no such path exists in the webgen website. You can also override the default generation mechanism on
|
|
46
|
+
a file per file basis by adding a `template` block in the sitemap file which is then used to generate
|
|
47
|
+
the sitemap.
|
data/doc/tag/coderay.page
CHANGED
|
@@ -8,6 +8,7 @@ used_options:
|
|
|
8
8
|
- tag.coderay.line_number_start
|
|
9
9
|
- tag.coderay.bold_every
|
|
10
10
|
- tag.coderay.tab_width
|
|
11
|
+
- tag.coderay.css
|
|
11
12
|
---
|
|
12
13
|
## Description
|
|
13
14
|
|
|
@@ -15,6 +16,9 @@ This tag applies syntax highlighting to its body by using the [coderay][1] libra
|
|
|
15
16
|
to highlight many different languages (see `tag.coderay.lang` documentation). The body of the tag
|
|
16
17
|
specifies what should be highlighted.
|
|
17
18
|
|
|
19
|
+
By using the configuration option `tag.coderay.css` you can specify whether you want to have inline
|
|
20
|
+
styles, the default external stylesheet file or your own stylesheet file.
|
|
21
|
+
|
|
18
22
|
> It is easy to include and highlight an entire file by combining this tag with the `include_file` tag:
|
|
19
23
|
>
|
|
20
24
|
> \{coderay:: ruby}{include_file: test.rb}{coderay}
|
|
@@ -43,7 +47,7 @@ specifies what should be highlighted.
|
|
|
43
47
|
<% end %>
|
|
44
48
|
</tr>
|
|
45
49
|
<tr>
|
|
46
|
-
<td>\{coderay:: {lang: ruby, wrap: span}}puts 5+5{coderay}</td>
|
|
47
|
-
<td><code>{coderay:: {lang: ruby, wrap: span}}puts 5+5{coderay}</code></td>
|
|
50
|
+
<td>\{coderay:: {lang: ruby, wrap: span, css: class}}puts 5+5{coderay}</td>
|
|
51
|
+
<td><code>{coderay:: {lang: ruby, wrap: span, css: class}}puts 5+5{coderay}</code></td>
|
|
48
52
|
</tr>
|
|
49
53
|
</table>
|
data/doc/tag/includefile.page
CHANGED
|
@@ -8,7 +8,7 @@ used_options:
|
|
|
8
8
|
## Description
|
|
9
9
|
|
|
10
10
|
The include file tag is used to include the content of a file. The filename needs to be specified
|
|
11
|
-
relative to the website directory or an absolute filename.
|
|
11
|
+
relative to the website directory or as an absolute filename.
|
|
12
12
|
|
|
13
13
|
> By surrounding the include file tag with a syntax highlighting tag it is possible to highlight the
|
|
14
14
|
> contents of a file.
|
data/doc/tag/menu.page
CHANGED
|
@@ -27,6 +27,9 @@ generating an in-page content menu of all the header sections.
|
|
|
27
27
|
|
|
28
28
|
> When using the option value `files` for `tag.menu.used_nodes`, all nodes which are only in the
|
|
29
29
|
> menu because they have fragment nodes beneath them are not included in the menu.
|
|
30
|
+
>
|
|
31
|
+
> However, when using the value `all` for `tag.menu.used_nodes`, some nodes which have `in_menu` set
|
|
32
|
+
> to `false` may appear in the menu if they have fragments beneath them that are in the menu!
|
|
30
33
|
{.important}
|
|
31
34
|
|
|
32
35
|
The rendered menu consists of `ul` and `li` tags and the links (or `span` elements) to the menu
|
|
@@ -44,7 +44,7 @@ module Webgen::CLI
|
|
|
44
44
|
# Apply the style specified in <tt>args[0]</tt> to the webgen website.
|
|
45
45
|
def execute(args)
|
|
46
46
|
wm = Webgen::WebsiteManager.new(commandparser.directory)
|
|
47
|
-
if !File.directory?(
|
|
47
|
+
if !File.directory?(wm.website.directory)
|
|
48
48
|
raise "You need to specify a valid webgen website directory!"
|
|
49
49
|
elsif args.length == 0
|
|
50
50
|
raise OptionParser::MissingArgument.new('STYLE')
|
data/lib/webgen/cli/utils.rb
CHANGED
|
@@ -11,8 +11,8 @@ module Webgen::CLI
|
|
|
11
11
|
# Provides methods for other CLI classes for formatting text in a consistent manner.
|
|
12
12
|
class Utils
|
|
13
13
|
|
|
14
|
-
USE_ANSI_COLORS =
|
|
15
|
-
DEFAULT_WIDTH = if Config::CONFIG['
|
|
14
|
+
USE_ANSI_COLORS = Config::CONFIG['host_os'] !~ /mswin|mingw/
|
|
15
|
+
DEFAULT_WIDTH = if Config::CONFIG['host_os'] =~ /mswin|mingw/
|
|
16
16
|
72
|
|
17
17
|
else
|
|
18
18
|
((size = %x{stty size 2>/dev/null}).length > 0 ? size.split.last.to_i : 72) rescue 72
|
data/lib/webgen/common.rb
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
require 'pathname'
|
|
4
|
-
|
|
5
3
|
module Webgen
|
|
6
4
|
|
|
7
5
|
# Namespace for classes and methods that provide common functionality.
|
|
@@ -9,13 +7,6 @@ module Webgen
|
|
|
9
7
|
|
|
10
8
|
autoload :Sitemap, 'webgen/common/sitemap'
|
|
11
9
|
|
|
12
|
-
# Make the given +path+ absolute by prepending the absolute path +base+ if necessary. Also
|
|
13
|
-
# resolves all '..' and '.' references in +path+.
|
|
14
|
-
def self.absolute_path(path, base)
|
|
15
|
-
raise(ArgumentError, 'base has to be an absolute path') unless base =~ /\//
|
|
16
|
-
Pathname.new(path =~ /^\// ? path : File.join(base, path)).cleanpath.to_s
|
|
17
|
-
end
|
|
18
|
-
|
|
19
10
|
end
|
|
20
11
|
|
|
21
12
|
end
|
|
@@ -18,8 +18,13 @@ module Webgen
|
|
|
18
18
|
#
|
|
19
19
|
# After writing the content processor class, one needs to add it to the
|
|
20
20
|
# <tt>contentprocessor.map</tt> hash so that it is used by webgen. The key for the entry needs to
|
|
21
|
-
# be a short name without special characters or spaces and the value
|
|
22
|
-
#
|
|
21
|
+
# be a short name without special characters or spaces and the value can be:
|
|
22
|
+
#
|
|
23
|
+
# * the class name, not as constant but as a string - then this content processor is assumed to
|
|
24
|
+
# work with textual data -, or
|
|
25
|
+
#
|
|
26
|
+
# * an array with the class name like before and the type, which needs to be <tt>:binary</tt> or
|
|
27
|
+
# <tt>:text</tt>.
|
|
23
28
|
#
|
|
24
29
|
# == Sample Content Processor
|
|
25
30
|
#
|
|
@@ -52,6 +57,8 @@ module Webgen
|
|
|
52
57
|
# end
|
|
53
58
|
#
|
|
54
59
|
# WebsiteAccess.website.config['contentprocessor.map']['replacer'] = 'SampleProcessor'
|
|
60
|
+
# # Or one could equally write
|
|
61
|
+
# # WebsiteAccess.website.config['contentprocessor.map']['replacer'] = ['SampleProcessor', :text]
|
|
55
62
|
#
|
|
56
63
|
module ContentProcessor
|
|
57
64
|
|
|
@@ -67,6 +74,8 @@ module Webgen
|
|
|
67
74
|
autoload :Erubis, 'webgen/contentprocessor/erubis'
|
|
68
75
|
autoload :RDiscount, 'webgen/contentprocessor/rdiscount'
|
|
69
76
|
autoload :Fragments, 'webgen/contentprocessor/fragments'
|
|
77
|
+
autoload :Head, 'webgen/contentprocessor/head'
|
|
78
|
+
autoload :Tidy, 'webgen/contentprocessor/tidy'
|
|
70
79
|
|
|
71
80
|
# Return the list of all available content processors.
|
|
72
81
|
def self.list
|
|
@@ -75,10 +84,16 @@ module Webgen
|
|
|
75
84
|
|
|
76
85
|
# Return the content processor object identified by +name+.
|
|
77
86
|
def self.for_name(name)
|
|
78
|
-
klass = WebsiteAccess.website.config['contentprocessor.map'][name]
|
|
87
|
+
klass, cp_type = WebsiteAccess.website.config['contentprocessor.map'][name]
|
|
79
88
|
klass.nil? ? nil : WebsiteAccess.website.cache.instance(klass)
|
|
80
89
|
end
|
|
81
90
|
|
|
91
|
+
# Return whether the content processor identified by +name+ is processing binary data.
|
|
92
|
+
def self.is_binary?(name)
|
|
93
|
+
WebsiteAccess.website.config['contentprocessor.map'][name].kind_of?(Array) &&
|
|
94
|
+
WebsiteAccess.website.config['contentprocessor.map'][name].last == :binary
|
|
95
|
+
end
|
|
96
|
+
|
|
82
97
|
# Helper class for accessing content processors in a Webgen::Context object.
|
|
83
98
|
class AccessHash
|
|
84
99
|
|