webgen 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +32 -2
- data/VERSION +1 -1
- data/doc/contentprocessor.template +10 -0
- data/doc/contentprocessor/blocks.page +67 -0
- data/doc/contentprocessor/builder.page +80 -0
- data/doc/contentprocessor/erb.page +51 -33
- data/doc/contentprocessor/haml.page +47 -0
- data/doc/contentprocessor/maruku.page +41 -0
- data/doc/contentprocessor/rdoc.page +36 -0
- data/doc/contentprocessor/redcloth.page +40 -0
- data/doc/contentprocessor/sass.page +32 -0
- data/doc/contentprocessor/tags.page +56 -44
- data/doc/extensions.metainfo +29 -0
- data/doc/extensions.page +15 -4
- data/doc/extensions.template +17 -0
- data/doc/reference_configuration.page +242 -5
- data/doc/reference_metainfo.page +9 -0
- data/doc/sourcehandler.template +21 -0
- data/doc/sourcehandler/copy.page +20 -0
- data/doc/sourcehandler/directory.page +27 -0
- data/doc/sourcehandler/metainfo.page +38 -115
- data/doc/sourcehandler/page.page +9 -27
- data/doc/sourcehandler/template.page +45 -0
- data/doc/sourcehandler/virtual.page +49 -0
- data/doc/tag.template +26 -0
- data/doc/tag/breadcrumbtrail.page +32 -0
- data/doc/tag/coderay.page +49 -0
- data/doc/tag/date.page +31 -0
- data/doc/tag/executecommand.page +26 -0
- data/doc/tag/includefile.page +32 -0
- data/doc/tag/langbar.page +22 -0
- data/doc/tag/menu.page +90 -0
- data/doc/tag/metainfo.page +29 -0
- data/doc/tag/relocatable.page +38 -0
- data/doc/webgen_page_format.page +2 -2
- data/lib/webgen/cli/utils.rb +1 -1
- data/lib/webgen/contentprocessor.rb +5 -0
- data/lib/webgen/contentprocessor/builder.rb +26 -0
- data/lib/webgen/contentprocessor/context.rb +4 -0
- data/lib/webgen/contentprocessor/erb.rb +24 -0
- data/lib/webgen/contentprocessor/haml.rb +25 -0
- data/lib/webgen/contentprocessor/maruku.rb +1 -1
- data/lib/webgen/contentprocessor/rdoc.rb +17 -0
- data/lib/webgen/contentprocessor/sass.rb +18 -0
- data/lib/webgen/default_config.rb +41 -10
- data/lib/webgen/node.rb +3 -2
- data/lib/webgen/path.rb +8 -1
- data/lib/webgen/sourcehandler.rb +15 -10
- data/lib/webgen/sourcehandler/page.rb +9 -1
- data/lib/webgen/tag.rb +6 -0
- data/lib/webgen/tag/breadcrumbtrail.rb +39 -0
- data/lib/webgen/tag/coderay.rb +32 -0
- data/lib/webgen/tag/date.rb +18 -0
- data/lib/webgen/tag/executecommand.rb +26 -0
- data/lib/webgen/tag/includefile.rb +42 -0
- data/lib/webgen/tag/langbar.rb +24 -0
- data/lib/webgen/tag/metainfo.rb +1 -1
- data/lib/webgen/version.rb +1 -1
- data/lib/webgen/webgentask.rb +5 -10
- data/misc/default.css +19 -0
- data/misc/default.template +3 -1
- data/misc/htmldoc.metainfo +3 -0
- data/misc/htmldoc.virtual +1 -1
- data/test/test_contentprocessor_builder.rb +19 -0
- data/test/test_contentprocessor_erb.rb +20 -0
- data/test/test_contentprocessor_haml.rb +20 -0
- data/test/test_contentprocessor_rdoc.rb +16 -0
- data/test/test_contentprocessor_sass.rb +20 -0
- data/test/test_node.rb +6 -2
- data/test/test_path.rb +5 -0
- data/test/test_sourcehandler_page.rb +8 -0
- data/test/test_tag_breadcrumbtrail.rb +78 -0
- data/test/test_tag_coderay.rb +30 -0
- data/test/test_tag_date.rb +16 -0
- data/test/test_tag_executecommand.rb +40 -0
- data/test/test_tag_includefile.rb +48 -0
- data/test/test_tag_langbar.rb +53 -0
- data/test/test_tag_menu.rb +1 -1
- data/test/test_webgentask.rb +21 -0
- metadata +81 -2
data/Rakefile
CHANGED
@@ -145,6 +145,9 @@ EOF
|
|
145
145
|
s.add_development_dependency('rcov', '>= 0.8.0')
|
146
146
|
s.add_development_dependency('dcov', '>= 0.2.2')
|
147
147
|
s.add_development_dependency('rubyforge', '>= 1.0.0')
|
148
|
+
s.add_development_dependency('RedCloth', '>= 3.0.0')
|
149
|
+
s.add_development_dependency('haml', '>= 2.0.1')
|
150
|
+
s.add_development_dependency('builder', '>= 2.1.0')
|
148
151
|
|
149
152
|
s.require_path = 'lib'
|
150
153
|
|
@@ -173,7 +176,7 @@ EOF
|
|
173
176
|
|
174
177
|
desc "Upload webgen documentation to Rubyforge homepage"
|
175
178
|
task :publish_doc => [:doc] do
|
176
|
-
sh "rsync -avc htmldoc/ gettalong@rubyforge.org:/var/www/gforge-projects/webgen/documentation/#{(Webgen::VERSION.split('.')[0..-2] + ['x']).join('.')}"
|
179
|
+
sh "rsync -avc --delete htmldoc/ gettalong@rubyforge.org:/var/www/gforge-projects/webgen/documentation/#{(Webgen::VERSION.split('.')[0..-2] + ['x']).join('.')}"
|
177
180
|
end
|
178
181
|
|
179
182
|
desc 'Release webgen version ' + Webgen::VERSION
|
@@ -228,7 +231,7 @@ EOF
|
|
228
231
|
|
229
232
|
desc "Upload the webgen website to Rubyforge"
|
230
233
|
task :publish_website => [:website] do
|
231
|
-
sh "rsync -avc --exclude 'documentation/0.5.x' --exclude 'documentation/0.4.x' --exclude 'wiki' website/out/ gettalong@rubyforge.org:/var/www/gforge-projects/webgen/"
|
234
|
+
sh "rsync -avc --exclude 'documentation/0.5.x' --exclude 'documentation/0.4.x' --exclude 'wiki' --exclude 'robots.txt' website/out/ gettalong@rubyforge.org:/var/www/gforge-projects/webgen/"
|
232
235
|
end
|
233
236
|
|
234
237
|
|
@@ -255,6 +258,33 @@ EOF
|
|
255
258
|
end
|
256
259
|
end
|
257
260
|
|
261
|
+
EXCLUDED_FOR_TESTS=FileList.new(['lib/webgen/cli{*,**/*}', 'lib/webgen/version.rb',
|
262
|
+
'lib/webgen/output.rb', 'lib/webgen/source.rb',
|
263
|
+
'lib/webgen/tag.rb', 'lib/webgen/default_config.rb',
|
264
|
+
])
|
265
|
+
|
266
|
+
EXCLUDED_FOR_DOCU=FileList.new(['lib/webgen/cli{*,**/*}', 'lib/webgen/contentprocessor/context.rb',
|
267
|
+
'lib/webgen/*/base.rb', 'lib/webgen/sourcehandler/fragment.rb',
|
268
|
+
])
|
269
|
+
|
270
|
+
desc "Checks for missing test/docu"
|
271
|
+
task :check_missing do
|
272
|
+
puts 'Files for which no test exists:'
|
273
|
+
Dir['lib/webgen/**/*'].each do |path|
|
274
|
+
next if File.directory?(path) || EXCLUDED_FOR_TESTS.include?(path)
|
275
|
+
test_path = 'test/test_' + path.gsub(/lib\/webgen\//, "").tr('/', '_')
|
276
|
+
puts ' '*4 + path unless File.exists?(test_path)
|
277
|
+
end
|
278
|
+
|
279
|
+
puts
|
280
|
+
puts 'Files for which no docu exists:'
|
281
|
+
Dir['lib/webgen/*/*'].each do |path|
|
282
|
+
next if EXCLUDED_FOR_DOCU.include?(path)
|
283
|
+
docu_path = 'doc/' + path.gsub(/lib\/webgen\//, "").gsub(/\.rb$/, '.page')
|
284
|
+
puts ' '*4 + path unless File.exists?(docu_path)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
258
288
|
end
|
259
289
|
|
260
290
|
task :clobber => ['dev:clobber']
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
template: extensions.template
|
3
|
+
--- name:summary pipeline:erb,tags,maruku,blocks
|
4
|
+
|
5
|
+
The short name of the content processor (used, for example, in the `pipeline` option of a block in a
|
6
|
+
file in [Webgen Page Format]({relocatable: webgen_page_format.html}) is `<%=
|
7
|
+
context.website.config['contentprocessor.map'].invert[context.content_node['title']] %>`.
|
8
|
+
|
9
|
+
--- name:content
|
10
|
+
<webgen:block name='content' />
|
@@ -0,0 +1,67 @@
|
|
1
|
+
---
|
2
|
+
title: Webgen::ContentProcessor::Blocks
|
3
|
+
---
|
4
|
+
## Description
|
5
|
+
|
6
|
+
This processor replaces a special xml tag with rendered blocks. It is used, for example, in
|
7
|
+
templates to define the place where the actual page content should be. The short name of the
|
8
|
+
processor is `blocks`!
|
9
|
+
|
10
|
+
The general syntax is as follows:
|
11
|
+
|
12
|
+
<webgen:block name='BLOCK_NAME' chain='(L)CN;(L)CN;...' />
|
13
|
+
|
14
|
+
So it is basically an XML tag with two attributes, `name` and `chain`. The `name` attribute
|
15
|
+
specifies the name of the block that should be rendered in place of the block tag. The next node in
|
16
|
+
the used node chain needs to have a block that is named so, otherwise an error is thrown (if there
|
17
|
+
is only one node left in the node chain that node is used). The block is rendered according to its
|
18
|
+
render pipeline and then inserted.
|
19
|
+
|
20
|
+
The optional attribute `chain` specifies the node chain that should be used for rendering the
|
21
|
+
block. Its value needs to be a list of (localized) canonical names of nodes separated by semicolons
|
22
|
+
that should be used as node chain. If this attribute is not specified the default node chain is
|
23
|
+
used.
|
24
|
+
|
25
|
+
This is more easily explained with examples. Assume we have a `default.template` file, a
|
26
|
+
`page.template` file and a `my.page` file with the following contents:
|
27
|
+
|
28
|
+
The `default.template` file:
|
29
|
+
|
30
|
+
--- name:content, pipeline:blocks
|
31
|
+
before default
|
32
|
+
<webgen:block name='content' />
|
33
|
+
after default 1
|
34
|
+
<webgen:block name='content' chain='page.template;my.page' />
|
35
|
+
after default 2
|
36
|
+
|
37
|
+
The `page.template` file:
|
38
|
+
|
39
|
+
--- name:content, pipeline:blocks
|
40
|
+
before page 1
|
41
|
+
<webgen:block name='content' />
|
42
|
+
after page 1
|
43
|
+
|
44
|
+
And the `my.page` file:
|
45
|
+
|
46
|
+
--- name:content
|
47
|
+
The content of the page file.
|
48
|
+
|
49
|
+
When `my.page` gets rendered to `my.html`, the node chain looks like this by default:
|
50
|
+
|
51
|
+
default.template ---> my.page
|
52
|
+
|
53
|
+
The first webgen block tag just inserts the rendered block named `content` of `my.page`. The second
|
54
|
+
block tag uses a custom node chain. Therefore the block named `content` of `page.template` gets
|
55
|
+
rendered using the node chain:
|
56
|
+
|
57
|
+
page.template ---> my.page
|
58
|
+
|
59
|
+
and then inserted. Summing up the above, the rendered file `my.html` will then look like this:
|
60
|
+
|
61
|
+
before default 1
|
62
|
+
The content of the page file.
|
63
|
+
after default 1
|
64
|
+
before page 1
|
65
|
+
The content of the page file.
|
66
|
+
after page 1
|
67
|
+
after default 2
|
@@ -0,0 +1,80 @@
|
|
1
|
+
---
|
2
|
+
title: Webgen::ContentProcessor::Builder
|
3
|
+
---
|
4
|
+
## Description
|
5
|
+
|
6
|
+
This content processor can be used to programatically create XHTML/XML documents
|
7
|
+
([Reference][1]). The top builder object is provided through the `xml` object. There are also other
|
8
|
+
objects provided by webgen available - have a look at the [erb documentation]({relocatable:
|
9
|
+
erb.html}). The short name of the processor is `builder`!
|
10
|
+
|
11
|
+
> This extension is only available if you have installed the [builder][1] library. The preferred way
|
12
|
+
> to do this is via Rubygems:
|
13
|
+
>
|
14
|
+
> gem install builder
|
15
|
+
{.exclamation}
|
16
|
+
|
17
|
+
|
18
|
+
## Examples
|
19
|
+
|
20
|
+
Here is a short sample of content that is valid Ruby and uses the special `xml` object:
|
21
|
+
|
22
|
+
xml.h1("This a h1 header", :id => 'myid')
|
23
|
+
|
24
|
+
xml.p do |p|
|
25
|
+
p.text! "You can just write "
|
26
|
+
p.b "your"
|
27
|
+
p.text! "paragraphs here and"
|
28
|
+
p.a("link", :href => "http://someurl.com")
|
29
|
+
p.text! "them below. This is also a"
|
30
|
+
p.i "nice"
|
31
|
+
p.text! "format!"
|
32
|
+
end
|
33
|
+
|
34
|
+
xml.blockquote(:class => 'information') do |bq|
|
35
|
+
bq.text! "Citations are easy too."
|
36
|
+
bq.text! "Really. And you can assign them attributes."
|
37
|
+
end
|
38
|
+
|
39
|
+
xml.ul do |ul|
|
40
|
+
ul.li "Lists"
|
41
|
+
ul.li "aren't"
|
42
|
+
ul.li "difficult"
|
43
|
+
ul.li "either."
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
Following is a complete example which shows how to use this extension in a page file which generates
|
48
|
+
a custom XML document (the `content` block has to be valid Ruby!):
|
49
|
+
|
50
|
+
---
|
51
|
+
output_path_style: [:parent, :cnbase, ['.', :lang], '.xml']
|
52
|
+
title: Person Object
|
53
|
+
template: ~
|
54
|
+
--- pipeline:builder
|
55
|
+
xml.persons(:path => node.absolute_lcn) do |p|
|
56
|
+
p.person do |b|
|
57
|
+
b.firstname('Thomas')
|
58
|
+
b.lastname('Leitner')
|
59
|
+
end
|
60
|
+
p.person do |b|
|
61
|
+
b.firstname('Other first')
|
62
|
+
b.lastname('Other last')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
The above will produce the following output:
|
67
|
+
|
68
|
+
<persons path="/test.xml">
|
69
|
+
<person>
|
70
|
+
<firstname>Thomas</firstname>
|
71
|
+
<lastname>Leitner</lastname>
|
72
|
+
</person>
|
73
|
+
<person>
|
74
|
+
<firstname>Other first</firstname>
|
75
|
+
<lastname>Other last</lastname>
|
76
|
+
</person>
|
77
|
+
</persons>
|
78
|
+
|
79
|
+
|
80
|
+
[1]: http://builder.rubyforge.org "Homepage of builder library"
|
@@ -1,38 +1,56 @@
|
|
1
1
|
---
|
2
2
|
title: Webgen::ContentProcessor::Erb
|
3
3
|
---
|
4
|
+
## Description
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
This processer uses ERB (embedded Ruby) to process content. For detailed information about ERB have
|
7
|
+
a look at its documentation by executing `ri ERB` or the [ruby documentation
|
8
|
+
site](http://www.ruby-doc.org/)! The short name of the processor is `erb`!
|
9
|
+
|
10
|
+
You can use the following special objects in your ERB code:
|
11
|
+
|
12
|
+
* `context`: This object provides the whole rendering context, the following objects are just for
|
13
|
+
backwards compatibility.
|
14
|
+
|
15
|
+
* `ref_node` (or `context.ref_node`): The reference node which is the source of the ERB code that is
|
16
|
+
executed. Should be used, for example, for resolving paths.
|
17
|
+
|
18
|
+
* `node` (or `context.content_node`): The node that gets currently rendered. Should be used for
|
19
|
+
retrieving meta information.
|
20
|
+
|
21
|
+
* `dest_node` (or `context.dest_node`): The node in which the result gets inserted. Should be used
|
22
|
+
for calculating relative paths.
|
23
|
+
|
24
|
+
Here is a small usage example. The following put in a page file
|
7
25
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
26
|
+
Counting 5 items dynamically:
|
27
|
+
<%% for i in 1..5 %>
|
28
|
+
* item <%%= i %>
|
29
|
+
<%% end %>
|
30
|
+
|
31
|
+
Outputting all meta information:
|
32
|
+
<%% node.meta_info.each do |k,v| %>
|
33
|
+
* <%%= k %> = <%%= v %>
|
34
|
+
<%% end %>
|
35
|
+
|
36
|
+
... will give the result:
|
37
|
+
|
38
|
+
Counting 5 items dynamically:
|
39
|
+
<% for i in 1..5 %>
|
40
|
+
* item <%= i %>
|
41
|
+
<% end %>
|
42
|
+
|
43
|
+
Outputting all meta information:
|
44
|
+
<% node.meta_info.each do |k,v| %>
|
45
|
+
* <%= k %> = <%= v %>
|
46
|
+
<% end %>
|
47
|
+
|
48
|
+
The second line shows the first form of the ERB tags which executes Ruby code but does not output
|
49
|
+
anything: it just starts a `for` loop. On the third line the second form of ERB tags is used to
|
50
|
+
output the result of the Ruby code (note the equation sign!). And the fourth line completes the
|
51
|
+
`for` loop by adding the needed `end` keyword.
|
52
|
+
|
53
|
+
> You may need to ensure that the ERB start and end tags are not processed by the content
|
54
|
+
> processor. For example, when using the RedCloth content processor, you may need to surround the
|
55
|
+
> ERB code with `<textile>` tags!
|
56
|
+
{.exclamation}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
---
|
2
|
+
title: Webgen::ContentProcessor::Haml
|
3
|
+
---
|
4
|
+
## Description
|
5
|
+
|
6
|
+
This processor converts the content, which is assumed to be in the Haml markup language, to valid
|
7
|
+
XHTML by using the Haml library. For detailed information about Haml have a look at the [Haml
|
8
|
+
Homepage][1]! The short name of the processor is `haml`!
|
9
|
+
|
10
|
+
You can use some special objects provided by webgen in your Haml markup. These are the same objects
|
11
|
+
that are available to the `erb` processor, have a look at its [documentation page]({relocatable:
|
12
|
+
erb.html}).
|
13
|
+
|
14
|
+
> This extension is only available if you have installed the [haml][1] library. The preferred way to
|
15
|
+
> do this is via Rubygems:
|
16
|
+
>
|
17
|
+
> gem install haml
|
18
|
+
{.exclamation}
|
19
|
+
|
20
|
+
|
21
|
+
## Example
|
22
|
+
|
23
|
+
Here is a short sample of a text in Haml markup:
|
24
|
+
|
25
|
+
%h1#myid This a h1 header
|
26
|
+
|
27
|
+
%p
|
28
|
+
You can just write
|
29
|
+
%b your
|
30
|
+
paragraphs here and
|
31
|
+
%a{:href => 'http://someurl.com'} link
|
32
|
+
them below. This is a
|
33
|
+
%strong nice
|
34
|
+
format!
|
35
|
+
|
36
|
+
%blockquote.information
|
37
|
+
Citations are easy too.
|
38
|
+
Really. And you can assign them attributes.
|
39
|
+
|
40
|
+
%ul
|
41
|
+
%li Lists
|
42
|
+
%li aren't
|
43
|
+
%li difficult
|
44
|
+
%li either.
|
45
|
+
|
46
|
+
|
47
|
+
[1]: http://haml.hamptoncatlin.com/
|
@@ -0,0 +1,41 @@
|
|
1
|
+
---
|
2
|
+
title: Webgen::ContentProcessor::Maruku
|
3
|
+
---
|
4
|
+
## Description
|
5
|
+
|
6
|
+
This processor converts the content, which is assumed to be in Markdown markup, to HTML by using the
|
7
|
+
Maruku library. Maruku is a Markdown processor which supports a superset of Markdown, including
|
8
|
+
support for assigning ids and classes to every element, support for Markdown inside HTML elements
|
9
|
+
and footnotes. The short name of the processor is `maruku`!
|
10
|
+
|
11
|
+
For detailed information about Maruku have a look at the [Maruku Homepage][1]. There you will find
|
12
|
+
information about the general Markdown syntax as well as information about the extras added by
|
13
|
+
Maruku.
|
14
|
+
|
15
|
+
> Maruku is the default markup content processor for webgen as its markup syntax is easy to learn
|
16
|
+
> and nice to look at. Give it a try!
|
17
|
+
{.info}
|
18
|
+
|
19
|
+
Example
|
20
|
+
-------
|
21
|
+
|
22
|
+
Here is a short sample of a text in Markdown+Extras markup:
|
23
|
+
|
24
|
+
# This a h1 header {#myid}
|
25
|
+
|
26
|
+
You can just write *your* paragraphs here and
|
27
|
+
[link][1] them below. This is **nice** format!
|
28
|
+
|
29
|
+
> Citations are easy too.
|
30
|
+
> Really. And you can assign them attributes.
|
31
|
+
{.information}
|
32
|
+
|
33
|
+
* Lists
|
34
|
+
* aren't
|
35
|
+
* difficult
|
36
|
+
* either.
|
37
|
+
|
38
|
+
[1]: http://someurl.com
|
39
|
+
|
40
|
+
|
41
|
+
[1]: http://maruku.rubyforge.org/
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
title: Webgen::ContentProcessor::RDoc
|
3
|
+
---
|
4
|
+
## Description
|
5
|
+
|
6
|
+
This content processors converts content written in RDoc markup (the default documentation format
|
7
|
+
for Ruby source files, [reference][1]) to HTML. The short name of the processor is `rdoc`!
|
8
|
+
|
9
|
+
> This extension needs the [new RDoc implementation][2] and is not compatible with the
|
10
|
+
> implementation included in the Ruby distribution. The preferred way to install the new
|
11
|
+
> implementation is via Rubygems:
|
12
|
+
>
|
13
|
+
> gem install rdoc
|
14
|
+
{.exclamation}
|
15
|
+
|
16
|
+
[1]: http://rdoc.rubyforge.org/rdoc/ "RDoc Reference"
|
17
|
+
[2]: http://rubyforge.org/projects/rdoc/ "New RDoc implementation"
|
18
|
+
|
19
|
+
## Example
|
20
|
+
|
21
|
+
Here is a short sample of a text in RDoc markup:
|
22
|
+
|
23
|
+
= This a h1 header
|
24
|
+
|
25
|
+
You can just write *your* paragraphs here and <a href="http://someurl.com">link</a> them below.
|
26
|
+
This is also a _nice_ format!
|
27
|
+
|
28
|
+
<blockquote class='information>
|
29
|
+
Citations are easy too.
|
30
|
+
Really. And you can assign them attributes.
|
31
|
+
</blockquote>
|
32
|
+
|
33
|
+
* Lists
|
34
|
+
* aren't
|
35
|
+
* difficult
|
36
|
+
* either.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
---
|
2
|
+
title: Webgen::ContentProcessor::RedCloth
|
3
|
+
---
|
4
|
+
## Description
|
5
|
+
|
6
|
+
This processor converts the content, which is assumed to be in Textile markup, to HTML by using the
|
7
|
+
RedCloth library. For detailed information about Textile have a look at the [Textile Reference][1]!
|
8
|
+
The short name of the processor is `redcloth`!
|
9
|
+
|
10
|
+
> This extension is only available if you have installed the [redcloth][2] library. The preferred
|
11
|
+
> way to do this is via Rubygems:
|
12
|
+
>
|
13
|
+
> gem install RedCloth
|
14
|
+
{.exclamation}
|
15
|
+
|
16
|
+
|
17
|
+
Example
|
18
|
+
-------
|
19
|
+
|
20
|
+
Here is a short sample of a text in Textile markup:
|
21
|
+
|
22
|
+
h1(#myid). This a h1 header
|
23
|
+
|
24
|
+
You can just write *your* paragraphs here and
|
25
|
+
"link":http://someurl.com them below. This is also a
|
26
|
+
**nice** format!
|
27
|
+
|
28
|
+
<blockquote class='information>
|
29
|
+
Citations are easy too.
|
30
|
+
Really. And you can assign them attributes.
|
31
|
+
</blockquote>
|
32
|
+
|
33
|
+
* Lists
|
34
|
+
* aren't
|
35
|
+
* difficult
|
36
|
+
* either.
|
37
|
+
|
38
|
+
|
39
|
+
[1]: http://hobix.com/textile/
|
40
|
+
[2]: http://whytheluckystiff.net/ruby/redcloth/
|