docgenerator-creole 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/examples/creole_example.rb +76 -0
- data/examples/creole_example_footnote.rb +66 -0
- data/examples/creole_example_new_plugin.rb +51 -0
- data/examples/creole_example_placeholder.rb +77 -0
- data/examples/creole_example_rail.rb +155 -0
- data/examples/creole_example_rubycode.rb +144 -0
- data/examples/creole_example_struktex.rb +170 -0
- data/examples/creole_example_tabular.rb +96 -0
- data/examples/creole_example_tikz.rb +47 -0
- data/lib/docgenerator-creole.rb +5 -0
- data/lib/docgenerator/creole.rb +15 -0
- data/lib/docgenerator/creole/base.rb +170 -0
- data/lib/docgenerator/creole/characters.rb +131 -0
- data/lib/docgenerator/creole/creole.rb +708 -0
- data/lib/docgenerator/creole/document.rb +91 -0
- data/lib/docgenerator/creole/inclusion_and_plugins.rb +91 -0
- data/lib/docgenerator/creole/inclusions.rb +148 -0
- data/lib/docgenerator/creole/placeholder.rb +242 -0
- data/lib/docgenerator/creole/plugins.rb +230 -0
- data/lib/docgenerator/creole/plugins/index.rb +61 -0
- data/lib/docgenerator/creole/plugins/rail.rb +179 -0
- data/lib/docgenerator/creole/plugins/rubycode4creole.rb +136 -0
- data/lib/docgenerator/creole/plugins/struktex.rb +60 -0
- data/lib/docgenerator/creole/plugins/tikz.rb +93 -0
- data/lib/docgenerator/creole/plugins/todonotes.rb +77 -0
- data/lib/docgenerator/creole/tabular.rb +405 -0
- data/readme.rdoc +44 -0
- data/unittest/Red_Flower.jpg +0 -0
- data/unittest/expected_creole/test_creole.html +3 -0
- data/unittest/expected_creole/test_creole_characters_all.creole +28 -0
- data/unittest/expected_creole/test_creole_characters_all.html +18 -0
- data/unittest/expected_creole/test_creole_characters_all.latex +36 -0
- data/unittest/expected_creole/test_creole_characters_special.html +10 -0
- data/unittest/expected_creole/test_creole_characters_special.latex +18 -0
- data/unittest/expected_creole/test_creole_comment.context +11 -0
- data/unittest/expected_creole/test_creole_comment.creole +12 -0
- data/unittest/expected_creole/test_creole_comment.html +9 -0
- data/unittest/expected_creole/test_creole_comment.latex +11 -0
- data/unittest/expected_creole/test_creole_countdown.html +3 -0
- data/unittest/expected_creole/test_creole_countdown.latex +4 -0
- data/unittest/expected_creole/test_creole_creole1.0test.html +182 -0
- data/unittest/expected_creole/test_creole_creole1.0test.latex +253 -0
- data/unittest/expected_creole/test_creole_creole1.0test.text +160 -0
- data/unittest/expected_creole/test_creole_footnotes.html +9 -0
- data/unittest/expected_creole/test_creole_footnotes.latex +14 -0
- data/unittest/expected_creole/test_creole_footnotes_groupid.html +15 -0
- data/unittest/expected_creole/test_creole_footnotes_label.html +9 -0
- data/unittest/expected_creole/test_creole_headings.html +17 -0
- data/unittest/expected_creole/test_creole_headings.latex +19 -0
- data/unittest/expected_creole/test_creole_headings.text +48 -0
- data/unittest/expected_creole/test_creole_headings.wiki +37 -0
- data/unittest/expected_creole/test_creole_hr.html +7 -0
- data/unittest/expected_creole/test_creole_hr.latex +9 -0
- data/unittest/expected_creole/test_creole_hr.text +4 -0
- data/unittest/expected_creole/test_creole_ignore.html +3 -0
- data/unittest/expected_creole/test_creole_ignore.latex +4 -0
- data/unittest/expected_creole/test_creole_ignore.text +2 -0
- data/unittest/expected_creole/test_creole_inline.html +3 -0
- data/unittest/expected_creole/test_creole_inline.latex +4 -0
- data/unittest/expected_creole/test_creole_inline.text +2 -0
- data/unittest/expected_creole/test_creole_inline_apostroph.html +7 -0
- data/unittest/expected_creole/test_creole_inline_apostroph.latex +9 -0
- data/unittest/expected_creole/test_creole_inline_apostroph.text +5 -0
- data/unittest/expected_creole/test_creole_inline_ruby.html +12 -0
- data/unittest/expected_creole/test_creole_inline_ruby.latex +20 -0
- data/unittest/expected_creole/test_creole_inline_ruby_raw.html +6 -0
- data/unittest/expected_creole/test_creole_inline_ruby_raw.latex +8 -0
- data/unittest/expected_creole/test_creole_input.normsource +22 -0
- data/unittest/expected_creole/test_creole_input.normsource_1.8 +23 -0
- data/unittest/expected_creole/test_creole_input_file_simple.html +15 -0
- data/unittest/expected_creole/test_creole_input_file_simple_readlines.html +15 -0
- data/unittest/expected_creole/test_creole_label.html +12 -0
- data/unittest/expected_creole/test_creole_label.latex +15 -0
- data/unittest/expected_creole/test_creole_line_break.html +6 -0
- data/unittest/expected_creole/test_creole_line_break.latex +8 -0
- data/unittest/expected_creole/test_creole_links_explicit_internal.html +6 -0
- data/unittest/expected_creole/test_creole_links_explicit_internal.text +4 -0
- data/unittest/expected_creole/test_creole_links_explicit_with_em.html +3 -0
- data/unittest/expected_creole/test_creole_links_explicit_with_em.latex +4 -0
- data/unittest/expected_creole/test_creole_links_explicit_with_em.text +2 -0
- data/unittest/expected_creole/test_creole_links_external.html +6 -0
- data/unittest/expected_creole/test_creole_links_external.latex +8 -0
- data/unittest/expected_creole/test_creole_links_external.text +4 -0
- data/unittest/expected_creole/test_creole_links_external_implicit.html +9 -0
- data/unittest/expected_creole/test_creole_links_external_implicit.latex +12 -0
- data/unittest/expected_creole/test_creole_links_external_implicit.text +6 -0
- data/unittest/expected_creole/test_creole_links_file.html +6 -0
- data/unittest/expected_creole/test_creole_links_file.latex +8 -0
- data/unittest/expected_creole/test_creole_links_file.text +4 -0
- data/unittest/expected_creole/test_creole_links_implicit_end.creole +4 -0
- data/unittest/expected_creole/test_creole_links_implicit_end.html +3 -0
- data/unittest/expected_creole/test_creole_links_implicit_end.latex +4 -0
- data/unittest/expected_creole/test_creole_list_ol.html +12 -0
- data/unittest/expected_creole/test_creole_list_ol.latex +22 -0
- data/unittest/expected_creole/test_creole_list_ol_after_ul.html +12 -0
- data/unittest/expected_creole/test_creole_list_ol_after_ul.latex +20 -0
- data/unittest/expected_creole/test_creole_list_ol_after_ul.text +6 -0
- data/unittest/expected_creole/test_creole_list_ol_ul.html +15 -0
- data/unittest/expected_creole/test_creole_list_ol_ul.latex +26 -0
- data/unittest/expected_creole/test_creole_list_ul.html +22 -0
- data/unittest/expected_creole/test_creole_list_ul.latex +40 -0
- data/unittest/expected_creole/test_creole_list_ul.normsource +85 -0
- data/unittest/expected_creole/test_creole_list_ul.normsource_1.8 +83 -0
- data/unittest/expected_creole/test_creole_list_ul_too_much.html +24 -0
- data/unittest/expected_creole/test_creole_list_ul_too_much.latex +44 -0
- data/unittest/expected_creole/test_creole_list_ulul_without_ul.html +6 -0
- data/unittest/expected_creole/test_creole_list_ulul_without_ul.latex +12 -0
- data/unittest/expected_creole/test_creole_mix_titles_list.html +10 -0
- data/unittest/expected_creole/test_creole_mix_titles_list.latex +18 -0
- data/unittest/expected_creole/test_creole_mix_titles_list.text +12 -0
- data/unittest/expected_creole/test_creole_newline.html +9 -0
- data/unittest/expected_creole/test_creole_newline.latex +11 -0
- data/unittest/expected_creole/test_creole_newline.text +7 -0
- data/unittest/expected_creole/test_creole_paragraphs.html +6 -0
- data/unittest/expected_creole/test_creole_paragraphs.latex +8 -0
- data/unittest/expected_creole/test_creole_paragraphs.normsource +26 -0
- data/unittest/expected_creole/test_creole_paragraphs.normsource_1.8 +27 -0
- data/unittest/expected_creole/test_creole_paragraphs.text +4 -0
- data/unittest/expected_creole/test_creole_paragraphs.wiki +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.html +5 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.latex +6 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.text +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.wiki +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.html +9 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.latex +11 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.text +7 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.wiki +7 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.html +5 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.latex +6 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.text +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.wiki +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.html +5 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.latex +6 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.text +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.wiki +4 -0
- data/unittest/expected_creole/test_creole_picture_link.html +6 -0
- data/unittest/expected_creole/test_creole_pictures.html +10 -0
- data/unittest/expected_creole/test_creole_pictures.latex +13 -0
- data/unittest/expected_creole/test_creole_pictures_css.html +6 -0
- data/unittest/expected_creole/test_creole_pictures_css.latex +8 -0
- data/unittest/expected_creole/test_creole_pictures_imgclass.html +6 -0
- data/unittest/expected_creole/test_creole_pictures_imgclass.latex +8 -0
- data/unittest/expected_creole/test_creole_pictures_longdesc.html +3 -0
- data/unittest/expected_creole/test_creole_pictures_width.html +3 -0
- data/unittest/expected_creole/test_creole_pictures_width.latex +4 -0
- data/unittest/expected_creole/test_creole_placeholders_html.html +7 -0
- data/unittest/expected_creole/test_creole_placeholders_html.latex +8 -0
- data/unittest/expected_creole/test_creole_placeholders_html.text +4 -0
- data/unittest/expected_creole/test_creole_placeholders_latex.html +6 -0
- data/unittest/expected_creole/test_creole_placeholders_latex.latex +9 -0
- data/unittest/expected_creole/test_creole_placeholders_latex.text +4 -0
- data/unittest/expected_creole/test_creole_short_html.html +3 -0
- data/unittest/expected_creole/test_creole_short_html.latex +4 -0
- data/unittest/expected_creole/test_creole_short_html.text +2 -0
- data/unittest/expected_creole/test_creole_shy.creole +6 -0
- data/unittest/expected_creole/test_creole_shy.html +6 -0
- data/unittest/expected_creole/test_creole_shy.latex +8 -0
- data/unittest/expected_creole/test_creole_shy.text +4 -0
- data/unittest/expected_creole/test_creole_tabular.creole +22 -0
- data/unittest/expected_creole/test_creole_tabular.html +20 -0
- data/unittest/expected_creole/test_creole_tabular.latex +22 -0
- data/unittest/expected_creole/test_creole_tabular_creole.creole +21 -0
- data/unittest/expected_creole/test_creole_tabular_creole.html +20 -0
- data/unittest/expected_creole/test_creole_tabular_creole.latex +21 -0
- data/unittest/expected_creole/test_creole_tabular_css.creole +24 -0
- data/unittest/expected_creole/test_creole_tabular_css.html +20 -0
- data/unittest/expected_creole/test_creole_tabular_css.latex +22 -0
- data/unittest/expected_creole/test_creole_tabular_multicols.creole +16 -0
- data/unittest/expected_creole/test_creole_tabular_multicols.html +14 -0
- data/unittest/expected_creole/test_creole_tabular_multicols.latex +16 -0
- data/unittest/expected_creole/test_creole_tabular_row_parameters.latex +22 -0
- data/unittest/expected_creole/test_creole_tabular_with_cell_option.creole +21 -0
- data/unittest/expected_creole/test_creole_tabular_with_cell_option.html +20 -0
- data/unittest/expected_creole/test_creole_toc.html +13 -0
- data/unittest/expected_creole/test_creole_toc.latex +22 -0
- data/unittest/expected_creole/test_creole_toc.text +4 -0
- data/unittest/expected_creole/test_creole_toc_level.html +7 -0
- data/unittest/expected_creole/test_creole_toc_level.latex +10 -0
- data/unittest/expected_creole/test_creole_toc_level.text +3 -0
- data/unittest/expected_creole/test_creole_toc_level_text.html +8 -0
- data/unittest/expected_creole/test_creole_toc_level_text.latex +9 -0
- data/unittest/expected_creole/test_creole_toc_text.html +5 -0
- data/unittest/expected_creole/test_creole_toc_text.latex +5 -0
- data/unittest/expected_creole/test_creole_ul_multiple_line.html +7 -0
- data/unittest/expected_creole/test_creole_ul_multiple_line.latex +14 -0
- data/unittest/expected_creole/test_creole_ul_with_blank.html +11 -0
- data/unittest/expected_creole/test_creole_ul_with_blank.latex +20 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.creole +0 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.html +11 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.latex +18 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.text +7 -0
- data/unittest/expected_creole/test_creole_verbatim.html +25 -0
- data/unittest/expected_creole/test_creole_verbatim.latex +33 -0
- data/unittest/expected_creole/test_creole_verbatim.text +17 -0
- data/unittest/expected_creole/test_creole_verbatim_inline.html +6 -0
- data/unittest/expected_creole/test_creole_verbatim_inline.latex +8 -0
- data/unittest/expected_creole/test_creole_verbatim_inline_at_start.html +6 -0
- data/unittest/expected_creole/test_creole_verbatim_inline_at_start.latex +8 -0
- data/unittest/expected_creole_rail/test_rail_creole_object.tex +33 -0
- data/unittest/expected_creole_rail/test_rail_creole_placeholder.tex +40 -0
- data/unittest/expected_rubycode4doc/creole_complete.html +26 -0
- data/unittest/expected_rubycode4doc/creole_complete.tex +40 -0
- data/unittest/expected_rubycode4doc/creole_in_tab.html +4 -0
- data/unittest/expected_rubycode4doc/creole_in_tab.tex +6 -0
- data/unittest/expected_rubycode4doc/creole_inline_ruby.html +7 -0
- data/unittest/expected_rubycode4doc/creole_output.html +2 -0
- data/unittest/expected_rubycode4doc/creole_output.tex +4 -0
- data/unittest/expected_rubycode4doc/creole_rubycode.html +1 -0
- data/unittest/expected_rubycode4doc/creole_rubycode.tex +3 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.html +1 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.tex +3 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.html +3 -0
- data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.tex +5 -0
- data/unittest/unittest_creole.rb +1379 -0
- data/unittest/unittest_creole_placeholders.rb +161 -0
- data/unittest/unittest_creole_plugin_rail.rb +148 -0
- data/unittest/unittest_creole_plugin_rubycode4doc.rb +123 -0
- data/unittest/unittest_creole_plugin_struktex.rb +26 -0
- data/unittest/unittest_creole_tabular.rb +212 -0
- metadata +529 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#encoding: utf-8
|
|
2
|
+
=begin rdoc
|
|
3
|
+
=end
|
|
4
|
+
|
|
5
|
+
require 'log4r'
|
|
6
|
+
|
|
7
|
+
module Docgenerator
|
|
8
|
+
=begin rdoc
|
|
9
|
+
Collect the classes to handle Creole-input.
|
|
10
|
+
|
|
11
|
+
More about creole at http://www.wikicreole.org/
|
|
12
|
+
=end
|
|
13
|
+
module Creole
|
|
14
|
+
=begin rdoc
|
|
15
|
+
Build a document.
|
|
16
|
+
This is just a little combination of the classes Document and Creole.
|
|
17
|
+
|
|
18
|
+
For the future: This class could allow features t build one TeX-file and
|
|
19
|
+
multiple HTML (corresponding to pages).
|
|
20
|
+
|
|
21
|
+
HTML-pagebreak could be forced with ======== or something similar.
|
|
22
|
+
=end
|
|
23
|
+
class Creole_document
|
|
24
|
+
|
|
25
|
+
=begin rdoc
|
|
26
|
+
Define a creole document. The settings are forwarded to Document#new()
|
|
27
|
+
|
|
28
|
+
Some settings are used only directly in Creole_document.
|
|
29
|
+
- :with_toc: Add a table of contents at the beginning of the document.
|
|
30
|
+
- :content: Wiki-text. Same as Creole_document#<<
|
|
31
|
+
- :logname: Name for Creole#log
|
|
32
|
+
=end
|
|
33
|
+
def initialize( settings = {} )
|
|
34
|
+
@with_toc = settings[:with_toc ]
|
|
35
|
+
settings.delete(:with_toc) #Avoid error message in Document.new
|
|
36
|
+
settings[:logname] ||= 'CreoleDoc' #Just a name for easier debugging/logging
|
|
37
|
+
|
|
38
|
+
@creole = Creole.new(
|
|
39
|
+
#Get content if available and delete setting to avoid error message in Document.new
|
|
40
|
+
:logname => settings.delete(:logname), #for logger
|
|
41
|
+
:content => settings.delete(:content),
|
|
42
|
+
:ignore => settings.delete(:ignore),
|
|
43
|
+
:targetdir => settings.delete(:targetdir)
|
|
44
|
+
)
|
|
45
|
+
#fixme/ideen parameter
|
|
46
|
+
#preamble -> vor wiki-texten
|
|
47
|
+
#post -> nach wiki-texten
|
|
48
|
+
|
|
49
|
+
@doc = Document.new(settings)
|
|
50
|
+
|
|
51
|
+
@doc.runtex = settings[:runtex] if settings[:runtex]
|
|
52
|
+
|
|
53
|
+
@log = @doc.log
|
|
54
|
+
|
|
55
|
+
@doc.body << creole
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
#The related document
|
|
59
|
+
attr_reader :doc
|
|
60
|
+
#The related creole-object
|
|
61
|
+
attr_reader :creole
|
|
62
|
+
#Add content to the wiki.
|
|
63
|
+
def << (content)
|
|
64
|
+
@creole << content
|
|
65
|
+
end
|
|
66
|
+
=begin rdoc
|
|
67
|
+
Save the creole document.
|
|
68
|
+
|
|
69
|
+
If requested, the tableofcontents is added.
|
|
70
|
+
The first Creole_document#save decides, which variant is added (html/tex)
|
|
71
|
+
=end
|
|
72
|
+
def save( filename, options = {} )
|
|
73
|
+
if @with_toc
|
|
74
|
+
@doc.body.insertbefore(creole, element(:htmlonly,{}, creole.toc(:level => @with_toc )))
|
|
75
|
+
@doc.body.insertbefore(creole, element(:latexonly,{},element(:tableofcontents).cr))
|
|
76
|
+
case @with_toc
|
|
77
|
+
when Numeric
|
|
78
|
+
@doc.head << element(:latexonly,{},"\\setcounter{tocdepth}{#{@with_toc}}\n")
|
|
79
|
+
end
|
|
80
|
+
@with_toc = false #Add it only once
|
|
81
|
+
end #@with_toc
|
|
82
|
+
|
|
83
|
+
@doc.save(filename, options )
|
|
84
|
+
end
|
|
85
|
+
#Use runtex if available.
|
|
86
|
+
def runtex=(option)
|
|
87
|
+
@doc.runtex = option
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
Creole inclusions and plugins
|
|
3
|
+
|
|
4
|
+
This classes are defined to implement transclusions (http://en.wikipedia.org/wiki/Transclusion)
|
|
5
|
+
|
|
6
|
+
* Inclusions are used later with {{xx}}
|
|
7
|
+
more at http://www.wikicreole.org/wiki/Inclusion
|
|
8
|
+
* Plugins are used later with <<xx>>
|
|
9
|
+
more at http://www.wikicreole.org/wiki/Plugin
|
|
10
|
+
|
|
11
|
+
By default, an inclusion expects a pictures, unless it es defined something else.
|
|
12
|
+
|
|
13
|
+
You can extend Wikis with additional inclusions:
|
|
14
|
+
|
|
15
|
+
wiki = Creole.new()
|
|
16
|
+
wiki.inclusion['xxx'] = Creole_inclusion_xxx
|
|
17
|
+
=end
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
|
|
21
|
+
module Docgenerator
|
|
22
|
+
module Creole
|
|
23
|
+
|
|
24
|
+
=begin rdoc
|
|
25
|
+
Dummy class for all inclusions and plugins.
|
|
26
|
+
Used to check the correct definition.
|
|
27
|
+
|
|
28
|
+
- Inclusions are used later with {{xx}}
|
|
29
|
+
- Plugins are used later with <<xx>>
|
|
30
|
+
|
|
31
|
+
Derived classes (Inclusions):
|
|
32
|
+
- Creole_inclusion_img
|
|
33
|
+
- Creole_inclusion_footnote_group
|
|
34
|
+
- Creole_inclusion_footnote
|
|
35
|
+
|
|
36
|
+
Derived classes (Plugins):
|
|
37
|
+
- Creole_default_plugin
|
|
38
|
+
- Creole_plugin_ruby
|
|
39
|
+
- Creole_plugin_ruby_raw
|
|
40
|
+
More subclasses may be possible.
|
|
41
|
+
=end
|
|
42
|
+
class Creole_inclusion_and_plugin
|
|
43
|
+
=begin rdoc
|
|
44
|
+
Example:
|
|
45
|
+
{{inclusionname|description|option1=1,option2=2}}
|
|
46
|
+
|
|
47
|
+
Parameters:
|
|
48
|
+
* inclusionname: Name of the inclusion (normally fix for an instance, unless e.g. Creole_inclusion_img)
|
|
49
|
+
* description: First parameter of the plugin.
|
|
50
|
+
* options: Array with the comma separated values.
|
|
51
|
+
In the example:
|
|
52
|
+
['option1=1','option2=2']
|
|
53
|
+
* wiki: creole-instance, where the plugin/inclusion is defined.
|
|
54
|
+
=end
|
|
55
|
+
def initialize( inclusionname, description, options, wiki )
|
|
56
|
+
@inclusionname = inclusionname
|
|
57
|
+
@description = description
|
|
58
|
+
@options = options
|
|
59
|
+
@wiki = wiki
|
|
60
|
+
|
|
61
|
+
raise "Inclusion received no wiki but #{wiki.inspect}" unless wiki.is_a?(Creole)
|
|
62
|
+
end
|
|
63
|
+
#Reader for the wiki.
|
|
64
|
+
attr_reader :wiki
|
|
65
|
+
|
|
66
|
+
=begin rdoc
|
|
67
|
+
Define meta-methods for Creole_inclusion_and_plugin
|
|
68
|
+
=end
|
|
69
|
+
class << self
|
|
70
|
+
=begin rdoc
|
|
71
|
+
Define class as a Inclusion.
|
|
72
|
+
You may use the class as:
|
|
73
|
+
{{key}}
|
|
74
|
+
=end
|
|
75
|
+
def set_inclusions_key(key)
|
|
76
|
+
Inclusions::Collection[key] = self
|
|
77
|
+
end
|
|
78
|
+
=begin rdoc
|
|
79
|
+
Define class as a Plugin.
|
|
80
|
+
You may use the class as:
|
|
81
|
+
<<key>>
|
|
82
|
+
=end
|
|
83
|
+
def set_plugin_key(key)
|
|
84
|
+
Plugins::Collection[key] = self
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end #Meta-methods
|
|
88
|
+
end #Creole_inclusion_and_plugin
|
|
89
|
+
end #module Creole
|
|
90
|
+
end #module Docgenerator
|
|
91
|
+
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
=begin rdoc
|
|
2
|
+
Creole inclusions.
|
|
3
|
+
|
|
4
|
+
This classes are defined to implement inclusions.
|
|
5
|
+
|
|
6
|
+
* Inclusions are used later with {{xx}}
|
|
7
|
+
more at http://www.wikicreole.org/wiki/Inclusion
|
|
8
|
+
|
|
9
|
+
By default, an inclusion expects a pictures, unless it es defined something else.
|
|
10
|
+
|
|
11
|
+
You can extend Wikis with additional inclusions:
|
|
12
|
+
|
|
13
|
+
wiki = Creole.new()
|
|
14
|
+
wiki.inclusion['xxx'] = Creole_inclusion_xxx
|
|
15
|
+
=end
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
module Docgenerator
|
|
20
|
+
module Creole
|
|
21
|
+
|
|
22
|
+
=begin rdoc
|
|
23
|
+
Define Inclusions
|
|
24
|
+
|
|
25
|
+
Inclusions are used via {{...}}
|
|
26
|
+
|
|
27
|
+
Default: Creole_inclusion_img (defined in class definition Creole_inclusion_img)
|
|
28
|
+
=end
|
|
29
|
+
module Inclusions
|
|
30
|
+
Collection = Hash.new()
|
|
31
|
+
|
|
32
|
+
=begin rdoc
|
|
33
|
+
Include images.
|
|
34
|
+
http://www.wikicreole.org/wiki/Images
|
|
35
|
+
|
|
36
|
+
There are yet more features than in standard.
|
|
37
|
+
|
|
38
|
+
This is also the default for inclusions.
|
|
39
|
+
|
|
40
|
+
Usage:
|
|
41
|
+
{{picurl.jpg|Alternate text|class=cc}}
|
|
42
|
+
{{picurl.jpg|Alternate text|css=width:50%}}
|
|
43
|
+
|
|
44
|
+
See also Placeholders::Creole_figure.
|
|
45
|
+
=end
|
|
46
|
+
class Creole_inclusion_img < Creole_inclusion_and_plugin
|
|
47
|
+
Collection.default = self
|
|
48
|
+
=begin rdoc
|
|
49
|
+
Define an image.
|
|
50
|
+
The existence of the picture is checked.
|
|
51
|
+
|
|
52
|
+
Supported options:
|
|
53
|
+
* alt (2nd parameter of {{picsrc|...}}
|
|
54
|
+
* css or imgcss
|
|
55
|
+
* class or imgclass
|
|
56
|
+
* longdesc (can take a url, at least opera offers to call the description)
|
|
57
|
+
* width (only LaTeX. For HTML, use css-option).
|
|
58
|
+
=end
|
|
59
|
+
def initialize( picname, alt_text, options, wiki )
|
|
60
|
+
super
|
|
61
|
+
@img = element(:img,{ :src => @inclusionname })
|
|
62
|
+
@img[:alt] << alt_text if alt_text
|
|
63
|
+
#Check existence of Picture. Only possible if the related wiki is available.
|
|
64
|
+
wiki.check_link_existence( @inclusionname, wiki.log )
|
|
65
|
+
|
|
66
|
+
css = CSS.new( :log => wiki.log )
|
|
67
|
+
|
|
68
|
+
#
|
|
69
|
+
#Check for options
|
|
70
|
+
#
|
|
71
|
+
#Missing options:
|
|
72
|
+
#* align
|
|
73
|
+
#* border
|
|
74
|
+
#* height
|
|
75
|
+
#* hspace
|
|
76
|
+
#* name
|
|
77
|
+
#* vspace
|
|
78
|
+
options.each{|option|
|
|
79
|
+
case option
|
|
80
|
+
when /^(img)?css\s*=\s*(.*)/
|
|
81
|
+
$2.split(/\s*;\s*/).each{|css_assignment|
|
|
82
|
+
css_assignment =~ /(.+?)\s*:\s*(.+)/
|
|
83
|
+
css[$1] = $2
|
|
84
|
+
}
|
|
85
|
+
when /^(img)?class\s*=\s*(.*)/
|
|
86
|
+
@img[:class] << $2
|
|
87
|
+
when /^width\s*=\s*(.*)/ #only for TeX
|
|
88
|
+
@img[:width] << $1
|
|
89
|
+
when /^height\s*=\s*(.*)/
|
|
90
|
+
@img[:height] << $1
|
|
91
|
+
when /^texoption\s*=\s*(.*)/
|
|
92
|
+
@img[:texoption] << $1
|
|
93
|
+
when /^caption\s*=\s*(.*)/
|
|
94
|
+
#makes only sense in TeX-output.
|
|
95
|
+
@img = element(:figure,{},[element(:centering), @img.Cr, element(:caption,{},$1).cr])
|
|
96
|
+
when /^longdesc\s*=\s*(.*)/ #gibt einen URI (nach RFC 2396) an, wo eine Langbeschreibung der Grafik zu finden ist
|
|
97
|
+
@img[:longdesc] << $1
|
|
98
|
+
else
|
|
99
|
+
wiki.log.warn("Img: Undefined option #{option}") if wiki.log.warn?
|
|
100
|
+
end #case option
|
|
101
|
+
} if options
|
|
102
|
+
@img.attr[:style] << css
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
def to_doc(target, options = {})
|
|
106
|
+
@img.to_doc(target, options)
|
|
107
|
+
end
|
|
108
|
+
end #Creole_inclusion_img
|
|
109
|
+
|
|
110
|
+
=begin rdoc
|
|
111
|
+
Some short html
|
|
112
|
+
|
|
113
|
+
Usage:
|
|
114
|
+
{{html|code}}
|
|
115
|
+
|
|
116
|
+
Note:
|
|
117
|
+
There is also a placeholder for larger html:
|
|
118
|
+
<<<html
|
|
119
|
+
content
|
|
120
|
+
>>>
|
|
121
|
+
=end
|
|
122
|
+
class Creole_short_html < Creole_inclusion_and_plugin
|
|
123
|
+
#We don't use it as plugin. Closing > from html may be confusing as in:
|
|
124
|
+
# <<html|<em>kursuiv</em>>>
|
|
125
|
+
set_inclusions_key 'html'
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def initialize( inclusionname, description, options, wiki )
|
|
129
|
+
super
|
|
130
|
+
options.each{|option|
|
|
131
|
+
#~ case option
|
|
132
|
+
#~ else
|
|
133
|
+
@wiki.log.warn("HTML with unknown option #{option.inspect} not found") if @wiki.log.warn?
|
|
134
|
+
#~ end
|
|
135
|
+
}
|
|
136
|
+
@source = description
|
|
137
|
+
|
|
138
|
+
end
|
|
139
|
+
#Return content only for html
|
|
140
|
+
def to_doc( target, options = {})
|
|
141
|
+
target == :html ? @source.to_doc( target, options ) : ''
|
|
142
|
+
end
|
|
143
|
+
end #Creole_inclusion_html
|
|
144
|
+
end #module Inclusions
|
|
145
|
+
end #module Creole
|
|
146
|
+
end #module Docgenerator
|
|
147
|
+
|
|
148
|
+
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
module Docgenerator
|
|
2
|
+
module Creole
|
|
3
|
+
|
|
4
|
+
=begin rdoc
|
|
5
|
+
Placeholder are defined in Creole-Syntax via <<< >>>
|
|
6
|
+
|
|
7
|
+
Placeholders get a name and optional parameters:
|
|
8
|
+
<<<name|parameter
|
|
9
|
+
|
|
10
|
+
Placeholders collect the content between <<< and >>>.
|
|
11
|
+
|
|
12
|
+
Derived classes are:
|
|
13
|
+
- Creole::Placeholders::Dummy
|
|
14
|
+
- Creole::Placeholders::Html
|
|
15
|
+
- Creole::Placeholders::Latex
|
|
16
|
+
- Creole::Creole_tabular
|
|
17
|
+
- Creole::Creole_tab
|
|
18
|
+
=end
|
|
19
|
+
class Placeholder
|
|
20
|
+
=begin rdoc
|
|
21
|
+
Define meta-methods for Creole_inclusion_and_plugin
|
|
22
|
+
=end
|
|
23
|
+
class << self
|
|
24
|
+
=begin rdoc
|
|
25
|
+
Define class as a placeholder.
|
|
26
|
+
You may use the class as:
|
|
27
|
+
{{key}}
|
|
28
|
+
=end
|
|
29
|
+
def set_placeholder_key(key)
|
|
30
|
+
Placeholders::Collection[key] = self
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
#Error is thrown, if the parameters don't fit the need of the placeholder
|
|
35
|
+
class ParameterError < ArgumentError; end;
|
|
36
|
+
=begin rdoc
|
|
37
|
+
Each placeholder get the wiki where it belongs to.
|
|
38
|
+
|
|
39
|
+
Parameters is an optional string.
|
|
40
|
+
|
|
41
|
+
Definition inside the wiki:
|
|
42
|
+
<<<name|parameters
|
|
43
|
+
content
|
|
44
|
+
>>>
|
|
45
|
+
Placeholders collect the content between <<< and >>>.
|
|
46
|
+
=end
|
|
47
|
+
def initialize( wiki, parameters = nil)
|
|
48
|
+
@wiki = wiki
|
|
49
|
+
@parameters = parameters
|
|
50
|
+
@log = @wiki.log
|
|
51
|
+
end
|
|
52
|
+
#
|
|
53
|
+
#Add the content between <<< and >>>.
|
|
54
|
+
def << (content)
|
|
55
|
+
@source = [] unless @source
|
|
56
|
+
@source << content
|
|
57
|
+
end
|
|
58
|
+
#
|
|
59
|
+
#Possibility to analyse the content.
|
|
60
|
+
def close()
|
|
61
|
+
@source.freeze
|
|
62
|
+
end
|
|
63
|
+
#Export it. Should be redefined by sub classes.
|
|
64
|
+
def to_doc( target, options = {})
|
|
65
|
+
@source.to_doc( target, options )
|
|
66
|
+
end
|
|
67
|
+
end #Placeholder
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
=begin rdoc
|
|
71
|
+
Collection of Placeholder-children
|
|
72
|
+
|
|
73
|
+
Placeholders are used via <<<...>>>.
|
|
74
|
+
=end
|
|
75
|
+
module Placeholders
|
|
76
|
+
=begin rdoc
|
|
77
|
+
Just a dummy for wrong definitions.
|
|
78
|
+
|
|
79
|
+
This class is used by Creole a default placeholder.
|
|
80
|
+
=end
|
|
81
|
+
class Dummy < Placeholder
|
|
82
|
+
end #Placeholder::Dummy
|
|
83
|
+
|
|
84
|
+
#List of defined Placeholders.
|
|
85
|
+
Collection = Hash.new( Dummy )
|
|
86
|
+
#Get a Placeholder.
|
|
87
|
+
def self.[](key)
|
|
88
|
+
Collection[key]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
=begin rdoc
|
|
93
|
+
Placeholder for pure HTML-output.
|
|
94
|
+
This content is ignored in LaTeX, Wiki... documents.
|
|
95
|
+
|
|
96
|
+
Usage:
|
|
97
|
+
<<<html
|
|
98
|
+
content
|
|
99
|
+
>>>
|
|
100
|
+
|
|
101
|
+
Note:
|
|
102
|
+
There is also a plugin for short html:
|
|
103
|
+
{{html|code}}
|
|
104
|
+
=end
|
|
105
|
+
class Creole_html < Placeholder
|
|
106
|
+
set_placeholder_key 'html'
|
|
107
|
+
#Return content only for html
|
|
108
|
+
def to_doc( target, options = {})
|
|
109
|
+
target == :html ? @source.to_doc( target, options ) : ''
|
|
110
|
+
end
|
|
111
|
+
end #Creole_html
|
|
112
|
+
|
|
113
|
+
=begin
|
|
114
|
+
Placeholder for pure LaTeX-output.
|
|
115
|
+
This content is ignored in HTML, Wiki... documents.
|
|
116
|
+
|
|
117
|
+
Idea for option: Parse the content by the wiki.
|
|
118
|
+
|
|
119
|
+
Pro:
|
|
120
|
+
-allows the usage of <<ruby|...
|
|
121
|
+
Cons:
|
|
122
|
+
-unexpected conversions?
|
|
123
|
+
=end
|
|
124
|
+
class Creole_latex < Placeholder
|
|
125
|
+
set_placeholder_key 'latex'
|
|
126
|
+
#Return content only for latex
|
|
127
|
+
def to_doc( target, options = {})
|
|
128
|
+
target == :latex ? @source.to_doc( target, options ) : ''
|
|
129
|
+
end
|
|
130
|
+
end #Creole_latex
|
|
131
|
+
|
|
132
|
+
=begin rdoc
|
|
133
|
+
Usage:
|
|
134
|
+
<<<comment
|
|
135
|
+
This text is a comment.
|
|
136
|
+
>>>
|
|
137
|
+
=end
|
|
138
|
+
class Creole_comment < Placeholder
|
|
139
|
+
set_placeholder_key 'comment'
|
|
140
|
+
#Return content as a comment
|
|
141
|
+
def to_doc( target, options = {})
|
|
142
|
+
case target
|
|
143
|
+
when :html; to_html( options )
|
|
144
|
+
when :latex; to_latex( options )
|
|
145
|
+
when :context; to_latex( options )
|
|
146
|
+
when :creole; to_creole( options )
|
|
147
|
+
else
|
|
148
|
+
@log.error("Creole_comment not supported for target #{target.inspect}") if @log.error?
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
def to_html(options = {})
|
|
152
|
+
return "<!-- #{@source.join} -->"
|
|
153
|
+
end
|
|
154
|
+
alias :to_context :to_latex
|
|
155
|
+
def to_latex(options = {})
|
|
156
|
+
return @source.map{|l| "%#{l}" }.join
|
|
157
|
+
end
|
|
158
|
+
def to_creole(options = {})
|
|
159
|
+
return "<<<comment\n#{@source.join}>>>"
|
|
160
|
+
end
|
|
161
|
+
end #Creole_comment
|
|
162
|
+
|
|
163
|
+
=begin
|
|
164
|
+
See also Inclusions::Creole_inclusion_img
|
|
165
|
+
|
|
166
|
+
Usage:
|
|
167
|
+
<<<figure|picname.jpg|options
|
|
168
|
+
Description
|
|
169
|
+
>>>
|
|
170
|
+
|
|
171
|
+
Options may be:
|
|
172
|
+
# options if element Figure
|
|
173
|
+
# options if element CSS
|
|
174
|
+
=end
|
|
175
|
+
class Creole_figure < Placeholder
|
|
176
|
+
set_placeholder_key 'figure'
|
|
177
|
+
|
|
178
|
+
#Return content as a comment
|
|
179
|
+
def to_doc( target, options = {})
|
|
180
|
+
css = CSS.new()
|
|
181
|
+
caption = nil
|
|
182
|
+
includegraphics_options = {}
|
|
183
|
+
|
|
184
|
+
fig = element(:figure,
|
|
185
|
+
:style => css
|
|
186
|
+
).CR
|
|
187
|
+
float = 'top'
|
|
188
|
+
@parameters.split(/\|/).each{|parameter|
|
|
189
|
+
case parameter
|
|
190
|
+
when /caption\s*=\s*(.*)/
|
|
191
|
+
caption = $1
|
|
192
|
+
when /class\s*=\s*(.*)/
|
|
193
|
+
fig.attr[:class] << $1
|
|
194
|
+
when /texwidth\s*=(.*)/
|
|
195
|
+
includegraphics_options[:width] = $1
|
|
196
|
+
when /(.*)=(.*)/
|
|
197
|
+
if fig.attr[$1]
|
|
198
|
+
fig[$1] = $2
|
|
199
|
+
elsif css.supports?($1)
|
|
200
|
+
css[$1] = $2
|
|
201
|
+
else
|
|
202
|
+
@log.warn("Unknown option %s in figure %s" % [parameter, src])
|
|
203
|
+
end
|
|
204
|
+
else
|
|
205
|
+
if includegraphics_options[:src]
|
|
206
|
+
@log.warn("Unknown option %s in figure %s" % [parameter, src])
|
|
207
|
+
else #Image is first parameter.
|
|
208
|
+
includegraphics_options[:src] = parameter
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
#Set defauts:
|
|
214
|
+
{'border-width' =>'1px',
|
|
215
|
+
'border-style' =>'solid',
|
|
216
|
+
'float' => 'right',
|
|
217
|
+
'width' => '50%',
|
|
218
|
+
}.each{|key,value|
|
|
219
|
+
css[key] = value unless css[key]
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
fig << element(:includegraphics,includegraphics_options).cr
|
|
223
|
+
fig << element(:label,{:name=>'fig:%s' % includegraphics_options[:src]}).cr
|
|
224
|
+
if @source
|
|
225
|
+
fig << element(:newline).cr
|
|
226
|
+
fig << @source
|
|
227
|
+
end
|
|
228
|
+
fig << element(:caption,{}, caption).cr if caption
|
|
229
|
+
fig.to_doc( target, options)
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
end #module Placeholders
|
|
234
|
+
end #module Creole
|
|
235
|
+
end #module Docgenerator
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
__END__
|
|
239
|
+
To be done:
|
|
240
|
+
rubycode (see plugin Creole_plugin_ruby )
|
|
241
|
+
|
|
242
|
+
Steuerparameter mit | nach plugin-name?
|